【问题标题】:What is the advantage of expression tree in ASP.NET MVC 5 @Html.DisplayForASP.NET MVC 5 @Html.DisplayFor 中表达式树的优势是什么
【发布时间】:2014-03-06 00:52:44
【问题描述】:
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
    </tr>
...

我发现过去对这个问题的回答相互矛盾。据我了解,左侧参数 modelItem 是未使用的参数。但是这个问题的公认答案MVC HTML Helpers and Lambda Expressions 说left 参数用于“描述” item.Title 的值。那么它是使用还是未使用?

modelItem 的预期类型是 IEnumerable 并且 item.Title 是一个字符串。我只是不明白如何描述另一个。然而,如果 modelItem 没有描述 item.Title,那么首先拥有 lambda 表达式树的目的是什么?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 使用@model 分配的模型是 IEnumerable ,因此可以延续到 DisplayFor 也期望 IEnumerable
    【解决方案2】:

    我正在准备由 Julie Lerman 撰写的Programming Entity Framework DbContext,它说第一个参数是名称,第二个是值。这样,在更复杂的查询中,您将引用名称而不仅仅是使用值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 2010-09-06
      • 2018-05-11
      • 1970-01-01
      • 2021-12-19
      相关资源
      最近更新 更多