2014-11-01 72 views
2

只有当用户被授权进行给定动作时,我才会显示动作链接。有没有一种好的方法可以在cshtml中做到这一点,而不必重复电镀。不检查我已经在属性中设置的相同权限。授权的动作链接

谢谢

回答

0

您可以将链接存储在数据库中。 并根据用户分配权限。 根据权利进行查看。

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

    @if (User.IsInRole("YourRole")) 
    { 
     @Html.ActionLink("Create Product", "Create") 
    } 
+0

这不会使用ASP.NET身份。 'IsInRole'抛出异常,这是有点obselete。 – DarthVader 2014-11-01 08:29:59

+1

您是否也将此属性添加到您的控制器? [InitializeSimpleMembership] – 2014-11-01 08:32:39

+0

这是过去十年中现在有了ASP.NET的身份。 – DarthVader 2014-11-01 08:35:18

0

我已经使用这个辅助函数过去只返回输出,当条件满足这样的:

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

所以你可以使用这个:

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

它是清晰可辨和短

+0

我已经看到了这个答案,并且正在寻找不涉及在两个不同地方重复我的权利的内容。 – 2014-11-03 07:58:29