2

我正在学习 ASP.NET MVC 4。一些默认模板视图包含如下内容:

@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)

4

1 回答 1

1

从技术上讲,正如您所说,modelItem 完全未使用。这是无参数 lambda 的示例。在这种情况下,我倾向于使用 _=>。我这样做是因为我们已经习惯了,尽管我认为它看起来确实有点奇怪。在循环列表时,它可以更容易地生成 editorfor 等。我知道没有其他调用 DisplayFor/EditorFor 的强类型方法

请参阅此问题以获取解释是否有比 () => 更好的方法来表达无参数 lambda?

于 2013-09-12T22:32:05.683 回答