繁体   English   中英

为什么ASP.NET MVC模板视图使用Html.DisplayFor显示不属于模型的数据?

[英]Why do the ASP.NET MVC template views use Html.DisplayFor to display data that is not part of the model?

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

@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接受一个表达式,其中输入参数是视图的Model,返回值是任何对象,然后为返回的对象找到合适的DisplayTemplate。

基于此,我可以看到DisplayFor(modelItem => item.Property1)为何起作用 ,但是感觉不正确。 如果我根本不使用modelItem参数,为什么要使用DisplayFor 有没有像GetDisplayTemplate(item.Property1)这样的方法?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM