ASP.NET MVC 5 @ Html.DisplayFor中表达式树的优点是什么?

时间:2014-03-06 00:52:44

标签: c# asp.net asp.net-mvc lambda asp.net-mvc-5.1

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
    </tr>
...

我发现过去对这个问题的答案存在矛盾的回应。据我所知,左参数modelItem是一个未使用的参数。但是这个问题的接受答案MVC HTML Helpers and Lambda Expressions表示左参数用于“描述”item.Title的值。它是使用还是未使用?

modelItem的预期类型是IEnumerable,item.Title是一个字符串。我只是看不出如何形容对方。然而,如果modelItem没有描述item.Title,那么首先使用lambda表达式树的目的是什么?

2 个答案:

答案 0 :(得分:0)

  

modelItem的预期类型是IEnumerable,item.Title是一个字符串。

不正确的。您在强类型视图中使用的HtmlHelper实例使用分配有@model指令的模型。只需在for循环中使用Html.xxxFor,就不会更改TModel辅助方法调用中的xxxFor泛型参数。

您会注意到辅助方法是HtmlHelper类的扩展方法。因此,无论您决定将Html.xxxFor方法的使用嵌套在...中,推断类型都将是封闭视图的类型。

答案 1 :(得分:0)

我正在阅读Julie Lerman的Programming Entity Framework DbContext,它说第一个参数是名称,第二个参数是值。这样,在更复杂的查询中,您将返回名称,而不仅仅是使用值。