Доступ к модифицированному закрытию в синтаксисе бритвы?

В следующем коде я получаю это предупреждение от 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>
}

person Luis Valencia    schedule 31.10.2011    source источник
comment
См.: ловушка внешней переменной   -  person dtb    schedule 31.10.2011


Ответы (2)


Вы можете смело игнорировать предупреждение.

При этом я бы заменил этот цикл 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>

Больше никаких предупреждений.

person Darin Dimitrov    schedule 31.10.2011

Это предупреждение является ошибкой и исправлено в ReSharper 6.1.

person derigel    schedule 31.10.2011