【问题标题】:Access to modified closure in razor syntax?以剃刀语法访问修改后的闭包?
【发布时间】:2011-12-18 13:37:31
【问题描述】:

在以下代码中,我收到了 Reshaper 的警告。我想知道我是否必须更改代码中的某些内容,或者只是隐藏这种类型的所有警告。

警告在每个 DisplayFor 行中

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Telephone)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Skypeuser)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ApplicantID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ApplicantID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ApplicantID })
        </td>
    </tr>
}

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-3 razor resharper


【解决方案1】:

您可以放心地忽略该警告。

话虽如此,我会用显示模板替换您视图中的这个 foreach 循环:

@model IEnumerable<MyViewModel>
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Telephone</th>
            <th>Skypeuser</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @Html.DisplayForModel()
    </tbody>
</table>

然后定义将自动为集合的每个元素呈现的相应显示模板(~/Views.Shared/DisplayTemplates/MyViewModel.cshtml):

@model MyViewModel
<tr>
    <td>
        @Html.DisplayFor(x => x.Name)
    </td>
    <td>
        @Html.DisplayFor(x => x.Telephone)
    </td>
    <td>
        @Html.DisplayFor(x => x.Skypeuser)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id = Model.ApplicantID }) |
        @Html.ActionLink("Details", "Details", new { id = Model.ApplicantID }) |
        @Html.ActionLink("Delete", "Delete", new { id = Model.ApplicantID })
    </td>
</tr>

没有更多警告。

【讨论】:

    【解决方案2】:

    该警告是此处的错误并已在 ReSharper 6.1 中修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 2011-07-28
      • 2010-09-23
      • 2015-11-08
      • 2012-09-14
      • 2010-12-13
      • 1970-01-01
      相关资源
      最近更新 更多