繁体   English   中英

HTML方法中用于ASP.NET的'=>'运算符是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM