示例代码:
<th>@Html.DisplayNameFor(model => model.Artist.Name)</th>
为什么lambda表达式是必需的?为什么不能只是
<th>@Html.DisplayNameFor(model.Artist.Name)</th>
答案 0 :(得分:6)
这是使用表达式树的技巧。
第一个在运行时构造一个表达式树,允许该方法进入并找到被访问的成员(从而获得它的所有属性)。
第二个只是将Name
的值传递给方法。
答案 1 :(得分:2)
请记住,您的模型只是一般数据结构的定义,并且在运行时绑定,以确定应将模型的实际值设置为什么,具体取决于用于访问数据的参数。
您所看到的只是为了实现此目的而定义DisplayNameFor方法的方式,并且您的第二行代码无效。 DisplayNameFor是HTML帮助程序的扩展方法,它接受一个lambda表达式作为单个参数,该表达式标识要显示的模型和模型的属性,以便实际的数据检索可以在运行时进行。请参阅此处以获取该方法的正式定义:
https://msdn.microsoft.com/en-us/library/hh833697(v=vs.118).aspx