Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是'=&燃气轮机';ASP.NET中的一个Html方法内的运算符,用于?_C#_Asp.net Mvc - Fatal编程技术网

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