Часть кода в представлении Razor не отображается - PullRequest
1 голос
/ 16 февраля 2012

Почему в следующей разметке Razor

@foreach (var item in Model) {
    <tr>
        <td>@Html.DisplayFor(modelItem => item.IncidentId)</td>
        ...
        <td>
            @Html.ActionLink("View", "View", new { id = item.IncidentId })
            @Html.ActionLink("Edit", "Edit", new { id = item.IncidentId })
            @{
            if (User.IsInRole("Manager"))
            {
                Html.ActionLink("Remove", "Remove", new {id = item.IncidentId});
            }
            }
        </td>
    </tr>
}

событие, когда пользователь является менеджером (я могу подтвердить, что RoleProvider работает нормально, так как во время отладки я вижу, как отладчик входит в код для вызова Html.ActionLink для Remove), ссылка на действующее действие не отображается в результирующем html?

Если я просто помещу

@Html.ActionLink("Remove", "Remove", new { id = item.IncidentId })

, она будет отображена в порядке.

1 Ответ

4 голосов
/ 16 февраля 2012

@{ } - кодовый блок, значения не будут записаны в ответный вывод по умолчанию.

Вы можете сделать:

@{
  if (User.IsInRole("Manager"))
  {
     @Html.ActionLink("Remove", "Remove", new {id = item.IncidentId});
  }
}

или

@if (User.IsInRole("Manager"))
{
   @Html.ActionLink("Remove", "Remove", new {id = item.IncidentId});
}
...