[英]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>>
或更具體地說:
等等等等。希望您現在擁有進行研究的工具。
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
。仔細看看智能感知,看看這些方法接受什么類型的東西。在這種情況下是一個object
。 anonymous type
是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.