为什么在以下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 })
它变得很好。
答案 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});
}