[英]ASP.NET/HTML: HTML button's onClick property inside ASP.NET (.cs)
[英]What's the '=>' operator in ASP.NET inside a Html method used for?
我知道这个问题有些棘手。 我知道该运算符的功能,但是我不理解的是例如以下几行代码:
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
EditorFor或ValidationMessageFor的参数,应该是lambda还是什么? 起初我以为,哦,这是一个lambda表达式(尽管我仍然对此感到困惑),但是后来我看到了:
@foreach(var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title);
</td>
</tr>
}
然后我说,我不知道,那看起来不是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());
}
您传入的是Expression<Func<TModel, TValue>>
。 是的,这是Lamda表达式
参数model
仅传递一个对象(您的模型)作为参数。 model.title
返回该对象的标题。
来自您的与modelItem
的foreach循环造成的混乱modelItem
就是。 您只是不使用modelItem
。
它只是不使用lambda中的参数,该参数可以命名为任何东西,例如thisIsATotallyUselessParameterBecauseImjustgonnauseItem => item.Title
是的,它是一个正则表达式。 我喜欢将lambda读为“对于某些变量x,请执行某些操作”。 通常,“做某事”是指对x做某事,但从技术上讲,您可以忽略x。 例如:“对于某些变量x,对项进行处理。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.