首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >asp.net MVC3 razor:基于用户角色的显示操作链接

asp.net MVC3 razor:基于用户角色的显示操作链接
EN

Stack Overflow用户
提问于 2011-08-08 20:08:43
回答 6查看 40.7K关注 0票数 63

我是MVC的新手。我希望能够为一些用户隐藏一些动作链接。假设我有一个"create“操作链接,我只想让管理员看到并点击它。我想使用asp.net中提供的某种"loggedintemplate“,但它在razor中似乎不起作用。

我可以使用某种带有if语句的代码块来检查当前用户及其角色,但这可能不是最佳实践?

我的index.cshtml..

代码语言:javascript
复制
// want some adminauth attribute here...
@Html.ActionLink("Create New", "Create")

我的控制器..

代码语言:javascript
复制
// GET: /Speaker/Create
[Authorize(Roles = "Administrators")]
public ActionResult Create()
{
    return View();
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-08 20:14:12

我在过去创建了一个helper函数,当满足以下条件时才返回输出:

代码语言:javascript
复制
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
     return evaluation ? value : MvcHtmlString.Empty;
}

因此,您可以使用以下命令:

代码语言:javascript
复制
@Html.ActionLink("Create New", "Create").If(User.IsInRole("Administrators"))

这样写起来既清晰又简短

票数 137
EN

Stack Overflow用户

发布于 2011-08-08 20:43:23

如果你想要一个代码块,在视图中就可以了:

代码语言:javascript
复制
@if (Roles.IsUserInRole("Administrators"))
{
  <li>@Html.ActionLink("Create New", "Create")</li>
}
票数 42
EN

Stack Overflow用户

发布于 2011-09-11 10:02:31

我已经修改了Richard的代码,以便提供一个可选的MvcHtmlString参数,以便在计算结果为false时返回。

代码语言:javascript
复制
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation, MvcHtmlString falseValue = default(MvcHtmlString))
        {
            return evaluation ? value : falseValue;
        }
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6981853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档