C# 行动链接(如果授权)

C# 行动链接(如果授权),c#,razor,model-view-controller,authorization,C#,Razor,Model View Controller,Authorization,我希望仅当用户被授权执行给定操作时才显示操作链接。在cshtml中有没有一种不重复极光化的好方法。不检查已在属性中设置的相同权限 谢谢您可以将链接存储在数据库中。 并根据用户分配权限。 查看时,根据权限创建链接。我以前使用过此帮助函数,仅当满足以下条件时才返回输出: [HttpPost] [InitializeSimpleMembership] [Authorize(Roles = "YourRole")] public ActionResult Cre

我希望仅当用户被授权执行给定操作时才显示操作链接。在cshtml中有没有一种不重复极光化的好方法。不检查已在属性中设置的相同权限


谢谢

您可以将链接存储在数据库中。 并根据用户分配权限。
查看时,根据权限创建链接。

我以前使用过此帮助函数,仅当满足以下条件时才返回输出:

 [HttpPost]
    [InitializeSimpleMembership]
    [Authorize(Roles = "YourRole")]        
    public ActionResult Create(Product p)
    {
        ...
    }

    @if (User.IsInRole("YourRole"))
    {
        @Html.ActionLink("Create Product", "Create")
    }
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
     return evaluation ? value : MvcHtmlString.Empty;
}
所以你可以用这个:

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

它易读且简短

,不适用于ASP.NET标识
IsInRole
引发异常,这有点妨碍。您是否也将此属性添加到控制器中?[InitializeSimpleMembership]那是过去的十年,现在有了ASP.NET身份。我看到了这个答案,正在寻找一些不涉及在两个不同地方重复我的权利的东西。