基本MVC:"modelItem =>"有什么作用?

Dar*_*ren 13 asp.net-mvc razor asp.net-mvc-3

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

@Html.DisplayFor(modelItem => item.LastName) 
Run Code Online (Sandbox Code Playgroud)
  • 我理解剃须刀是如何工作的(@)
  • 我理解Html是一个带有静态辅助函数的对象,比如 DisplayFor()
  • 我理解,item.LastName因为这松散地表示数据/模型中的行和列

......但到底是modelItem =>什么?在我的日子里,=>曾经是一个被评估为布尔值的运算符.这巫术是什么?

bun*_*ink 12

你在做什么是传递一个lambda表达式.这些与委托,C中的函数指针或Javascript中的函数基本相同.你基本上告诉Html DisplayFor"使用这个函数获取显示项目".您的示例实际应该是:

@Html.DisplayFor(modelItem => modelItem.LastName)
Run Code Online (Sandbox Code Playgroud)

否则,您试图从外部范围关闭"item".如果这是你真正想要做的,那么modelItem基本上什么都没做......

请参阅http://msdn.microsoft.com/en-us/library/bb397687.aspx