おそらくかなり基本的な質問がありますが、実際にはわかりません。だからここに来る。
ビューテンプレートファイル(.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は一般的なようです(ラムダ式を式に送信できるようです)。
ここでのラムダ式(m => m.CurrentPage.MainBody)は、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)の場合、ここでのコンテキストは何ですか?mは何を指しているのですか?これは、この特定のビューで@modelに何らかの形で「魔法のように」接続されていますか?(この場合は@model PageViewModel<ArticlePage>
"です)。
要約すると、式(m => m.CurrentPage.MainBody)でmは何を参照していますか?@modelを介してビューで提供されたモデルを参照しているとどういうわけか想定されていますか?