簡體   English   中英

c# razor (ASP.NET MVC) 中的 Html 輔助參數

[英]Html helper parameters in c# razor (ASP.NET MVC)

我看到很多這樣的代碼:

@Html.LabelFor(x => x.username)
@Html.TextBoxFor(x => x.password)

這些只是例子。 誰能向我解釋一下x => x.username部分是什么意思? 我仍然在我的 asp.net c# mvc 應用程序中使用這樣的 html 標簽<input type="text">因為我不了解@Html.TextBox樣式。

還有這樣的new參數:

@Html.TextBoxFor(x => x.username, new {placeholder = @Html.DisplayNameFor(x => x.username})

我不明白所有這些是什么意思。 有人可以解釋一下嗎?

提前致謝。

你的大部分問題都可以通過研究來解決。 看來您無法確定如何找到問題的答案 這應該可以幫助您現在和將來確定如何找到大多數此類問題的答案。

誰能向我解釋一下 x => x.username 部分是什么意思?

好吧,讓我們做一些研究。 第一步是,方法簽名是什么樣的。 在谷歌上簡單搜索LabelFor和我們的第一個鏈接顯示..

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx

有一堆簽名,我會選擇第一個,因為它與您的第一個代碼示例相匹配。

@Html.LabelFor(x => x.username)

火柴:

public static MvcHtmlString LabelFor<TModel, TValue>(
  this HtmlHelper<TModel> html,
  Expression<Func<TModel, TValue>> expression
)

我看到第一個參數以此開頭,它表示一個擴展方法超出了您原始問題的范圍,因此我將忽略它。

第二個參數是Expression<Func<TModel, TValue>> expression Google 搜索Expression Func產生很多有用的結果。

這是什么意思: Expression<Func<TModel, TValue>>

或更具體地說:

Expression<TDelegate>

等等等等。希望您現在擁有進行研究的工具。

建議閱讀: C# 委托、匿名方法和 Lambda 表達式——我的天哪!

x => x.username是一個 lambda 表達式。 您應該閱讀更多關於匿名方法和委托的信息。 但是那些強類型的 html 助手接受一個名為Func<in T, out TResult>的通用委托(不記得確切的簽名),它表示一個接受T並返回TResult的函數。 T是你的@Model

@Html.TextBoxFor(x => x.UserName) = <input type="text" name="UserName" id="UserName"/>

@Html.TextBox("UserName")同上。 但是那條紅繩不好。

盡量保持您的視圖強類型,以便您可以重命名屬性,而不必擔心必須手動更新的所有視圖。

new {placeholder = @Html.DisplayNameFor(x => x.username}是一個anonymous type 。仔細看看智能感知,看看這些方法接受什么類型的東西。在這種情況下是一個objectanonymous type是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM