asp.net MVC3 razor:如何根据用户角色显示actionlink?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我是MVC的新手。我希望能够隐藏一些用户的一些动作链接。假设我有一个“创建”操作链接,我只希望管理员看到并单击它。我想在asp.net中使用某种“loggedintemplate”,但它似乎不适用于razor。

我可以使用某种代码块来检查当前用户和她的角色,但这可能不是最佳实践吗?

我的index.cshtml ..

// want some adminauth attribute here...
@Html.ActionLink("Create New", "Create")

我的控制器..。

// GET: /Speaker/Create
[Authorize(Roles = "Administrators")]
public ActionResult Create()
{
    return View();
}
提问于
用户回答回答于

我在过去创建了一个帮助器函数,只有在符合条件时才返回输出:

public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
     return evaluation ? value : MvcHtmlString.Empty;
}

所以你可以用这个:

@Html.ActionLink("Create New", "Create").If(User.IsInRole("Administrators"))

这样,它就容易读懂了,而且很短。

用户回答回答于

如果你想要一个代码块,那会在视图中执行:

@if (Roles.IsUserInRole("Administrators"))
{
  <li>@Html.ActionLink("Create New", "Create")</li>
}

扫码关注云+社区

领取腾讯云代金券