C# 什么';这是'=&燃气轮机';ASP.NET中的一个Html方法内的运算符,用于?
我知道这个问题有点棘手。我知道该运算符的作用,但我不明白的是,例如,以下几行代码:C# 什么';这是'=&燃气轮机';ASP.NET中的一个Html方法内的运算符,用于?,c#,asp.net-mvc,C#,Asp.net Mvc,我知道这个问题有点棘手。我知道该运算符的作用,但我不明白的是,例如,以下几行代码: <div class="editor-field"> @Html.EditorFor(model => model.Title) @Html.ValidationMessageFor(model => model.Title) </div> @EditorFor(model=>model.Title) @Html.ValidationMessageFor
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
@EditorFor(model=>model.Title)
@Html.ValidationMessageFor(model=>model.Title)
EditorFor或ValidationMessageFor的参数应该是lambda还是什么?起初我以为,哦,这是一个lambda表达式(尽管我仍然被它弄糊涂了),但后来我看到了:
@foreach(var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title);
</td>
</tr>
}
@foreach(模型中的变量项){
@DisplayFor(modeleItem=>item.Title);
}
然后我说,我不知道,这看起来不是一个lambda表达式,左边应该是参数,右边应该是它返回的(或身体),然后我说:“嗯,好吧,那没有使用参数,……那到底是什么?”
我知道这是一个有点愚蠢的问题,但我想知道一切是如何运作的
提前谢谢 HtmlHelper基本上有以下定义:
public static MvcHtmlString Foo<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression)
{
var method = expression.Compile();
//Pass the current model as parameter to your compiled expression:
var value = method(htmlHelper.ViewData.Model);
//Convert the result of your Expression to a String:
return new MvcHtmlString(value.ToString());
}
public static MvcHtmlString Foo(此HtmlHelper HtmlHelper,表达式)
{
var method=expression.Compile();
//将当前模型作为参数传递给编译后的表达式:
var值=方法(htmlHelper.ViewData.Model);
//将表达式的结果转换为字符串:
返回新的MvcHtmlString(value.ToString());
}
您传入的是类型为Expression
。是的,这是一个Lamda表达式
参数model
仅将对象(您的模型)作为参数传递model.title
返回该对象的标题
来自您的foreach循环与
modelItem
的混淆不是别的。您只是没有使用modelItem
它只是没有使用lambda中的参数,该参数可以被命名为任何名称,比如ThisIsaTotalyuSelessParameters,因为它是一个普通的lambda表达式。我喜欢把lambda理解为“对于某个变量x,做点什么。”通常“做点什么”意味着用x做点什么,但从技术上讲,你可以忽略x。例如:“对于某些变量x,对项执行一些操作。”它们仍然是lambda方法,只是那些不使用传递给它们的参数的方法。我喜欢你的思维过程中不断出现的注释,lol:p