我找到了这个相关主题,但它没有回答我的问题。
当自动创建强类型视图时,假设使用List
脚手架模板,我将得到大致如下所示的内容:
@model IEnumerable<Test.Models.abc>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.ID)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ID)
</td>
</tr>
}
</table>
我完全理解@Html.DisplayNameFor(model => model.ID)
,但不是@Html.DisplayFor(modelItem => item.ID)
。
目的是modelItem
什么?用任意文本替换它会产生一个功能性的网页。似乎 modelItem 只是一个一次性的词。我想我真正的问题是为什么这不起作用?
@Html.DisplayFor(item => item.ID)
编辑
评论中提出了一个很好的观点。model
只要您在 lambda 表达式的两侧进行更改,您似乎也可以更改为任何内容:
@Html.DisplayNameFor(abc => abc.ID)
@model
一个附带的问题是:顶部的语句如何影响下面的功能?我以前认为model
引用@model
表达式是为了通过类找出显示名称,但是在提到的更改之后页面仍然有效。