Razor视图中的部分代码未呈现

时间:2012-02-16 17:47:48

标签: asp.net-mvc razor

为什么在以下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>
}

当用户是Manager时的事件(我可以确认RoleProvider工作正常,因为在调试时我可以看到调试器如何进入代码以调用Html.ActionLink进行删除),实际操作链接无法获得渲染成生成的html?

如果我只是放置

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

它变得很好。

1 个答案:

答案 0 :(得分:4)

@{ }是一个代码块,默认情况下,值不会写入响应输出。

你可以这样做:

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

或:

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