我有一個問題,可能是很基本的,但我真的不明白這一點。所以它來了。Html.DisplayFor(或其他htmlhelpers)
如果我有一個視圖模板文件(.cshtml),並有這樣的代碼行:
@Html.DisplayFor(m => m.CurrentPage.MainBody)
如果我看的聲明DisplayFor它看起來像這樣:
public static MvcHtmlString DisplayFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression);
所以這是一個採用Expression參數的擴展方法,但TModel和TValue似乎是通用的(顯然,您可以將lambda表達式發送到Expression)。
這裏(M => m.CurrentPage.MainBody)lambda表達式如何才能知道什麼m是?
如果我有一個lamdba表達這樣的:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
然後,對於(N => N%2 == 1)的上下文中是邏輯,所述lamdba表達式用於在數字的每個元素評價。
但在上面@ Html.DisplayFor的情況(M => m.CurrentPage.MainBody)是什麼上下文這裏嗎?什麼是指的?這在某個視圖中以某種方式「神奇地」連接到@model? (在這種情況下是@model PageViewModel<ArticlePage>
「)
所以總結一下,在表達式中引用了什麼(m => m.CurrentPage.MainBody)?是否假設它是指提供的模型在經由@model視圖?
非常感謝。現在我明白了! –