我正在尝试根据用户的角色隐藏控件。我曾经能够做类似
的事情@if (User.IsInRole("Admin"))
{Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")}
在视图中但这似乎不再起作用了。经过大量挖掘后,我发现Identity 2.0根本不使用它。
我还可以直接在View中使用吗?或者我完全错了吗?
答案 0 :(得分:0)
这种类型的逻辑最好放在控制器内,留下视图进行渲染。
您可以在控制器中使用Html.Action并结合使用ChildActions,并根据用户角色渲染部分视图。
我刚才发布了一个与此类似的问题,认为这会对你有所帮助。
<强> - 编辑 - 强>
为了澄清,这可以使用新的ASP.NET标识
这将进入布局
@Html.Action("BuildNavigation", "Component")
这将是你的控制者。
public class ComponentController : Controller
{
[ChildActionOnly]
public ActionResult BuildNavigation()
{
if (this.User.IsInRole("customer"))
{
return PartialView("_NavigationCustomer");
}
else
{
return PartialView("_NavigationBasic");
}
}
}
这应该让你朝着正确的方向前进。
答案 1 :(得分:0)
这应该仍然可以正常工作,因为身份样本目前正在做类似的事情,只显示&#34;管理员&#34;
的顶级链接 @if (Request.IsAuthenticated && User.IsInRole("Admin")) {
<li>@Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")</li>
<li>@Html.ActionLink("UsersAdmin", "Index", "UsersAdmin")</li>
}