为什么 ASP.NET MVC 模板视图使用 Html.DisplayFor 来显示不属于模型的数据
本文关键字:显示 DisplayFor 不属于 模型 数据 Html MVC NET ASP 视图 为什么 | 更新日期: 2023-09-27 18:31:04
我正在学习MVC 4 ASP.NET。一些默认模板视图包含如下内容:
@model IEnumerable<SomeModel>
...
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Property1)
</td>
<td>
@Html.DisplayFor(modelItem => item.Property2)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
}
我的理解是,DisplayFor
采用一个表达式,其中输入参数是视图的模型,返回值是任何对象,并为返回的对象找到适当的 DisplayTemplate。
基于此,我可以看到为什么DisplayFor(modelItem => item.Property1)
有效,但感觉不是正确的选择。如果我根本不使用 modelItem
参数,为什么要使用 DisplayFor
?没有像GetDisplayTemplate(item.Property1)
这样的方法吗?
从技术上讲,正如您所说,模型项完全未使用。这是无参数 lambda 的示例。在这种情况下,我倾向于使用 _=>。我这样做是因为我们已经习惯了,尽管我想它看起来确实有点奇怪。它使在循环列表时生成编辑器等变得更加容易。我知道没有其他强类型的方式来调用 DisplayFor/EditorFor
请参阅此问题进行解释 有没有比 () => 更好的方法来表达无参数 lambda?