Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net mvc 基本MVC:什么是;modelItem=>&引用;做_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 基本MVC:什么是;modelItem=>&引用;做

Asp.net mvc 基本MVC:什么是;modelItem=>&引用;做,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,下面是Visual Studio在MVC类型的应用程序中经常生成的代码示例行: @Html.DisplayFor(modelItem => item.LastName) 我了解剃须刀的工作原理(代码) 我知道Html是一个带有静态帮助函数的对象,比如DisplayFor() 我理解item.LastName,因为它松散地表示数据/模型中的行和列 …但究竟是什么呢modelItem=>?回到我的时代,=>曾经是一个计算为布尔值的运算符。这是什么魔法?你在那里做的是传递一个lambda

下面是Visual Studio在MVC类型的应用程序中经常生成的代码示例行:

@Html.DisplayFor(modelItem => item.LastName) 
  • 我了解剃须刀的工作原理(代码)
  • 我知道Html是一个带有静态帮助函数的对象,比如
    DisplayFor()
  • 我理解
    item.LastName
    ,因为它松散地表示数据/模型中的行和列

…但究竟是什么呢
modelItem=>
?回到我的时代,
=>
曾经是一个计算为布尔值的运算符。这是什么魔法?

你在那里做的是传递一个lambda表达式。它们本质上与委托、C中的函数指针或Javascript中的函数相同。您基本上是在告诉Html DisplayFor“使用此函数获取显示项”。你的例子应该是:

@Html.DisplayFor(modelItem => modelItem.LastName)
否则,您将尝试从外部作用域关闭“项”。如果这是您真正想要做的,那么modelItem实际上什么都不做


请看

我刚刚在一些搭建的MVC代码中看到了
modelItem
,我想我应该添加到bullesticks的答案中

问题中的代码可能来自标准的MVC框架索引视图(其中模型是
IEnumberable
),并围绕着它:

@foreach (var item in Model) {

}
代码正在使用DisplayFor的此重载:

public static MvcHtmlString DisplayFor<TModel, TValue>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> expression
)
public static MvcHtmlString DisplayFor(
这个HtmlHelper html,
表情
)

因此,modelItem(正如bunglestink所说)没有做任何事情(结果中没有使用它)。
item.LastName
返回IEnumerable中该项的实际LastName,并且
DisplayFor
将为该数据类型生成正确的html。

符号是C,而不是特定于MVC的。看MSDN:哇,我喜欢这个问题!:)谢谢你解释
modelItem
,这一直困扰着我。