仅当用户已登录且处于管理员角色时才显示管理面板按钮

时间:2013-06-03 10:19:23

标签: c# asp.net-mvc asp.net-mvc-4

基本上我的问题是基于这个问题:

Show menu item only for logged-on users

他们在prewouse问题中解决它的方式是一种hacky方式。我读了一下这个问题,发现你必须创建自定义HTML Helper,它将根据用户角色显示或隐藏按钮。

所以它在View中看起来像是:

 @HTML.MyCustomHelperWhichShowButton("ButtonText"); 

但我应该如何实施这样的帮助呢?

1 个答案:

答案 0 :(得分:1)

  

但我应该如何实施这样的帮助?

通过向HtmlHelper类编写扩展方法:

public static class HtmlExtensions
{
    public static IHtmlString MyCustomHelperWhichShowButton(this HtmlHelper html, string text)
    {
        var isAuthnticated = html.ViewContext.HttpContext.User.Identity.IsAuthenticated;
        if (isAuthnticated)
        {
            return html.ActionLink(text, "MyListings", "List");
        }

        return new HtmlString(string.Empty);
    }
}

并将您在其中定义此类的命名空间添加到<namespaces>文件的~/Views/web.config部分,该部分会将此帮助程序纳入您所有视图的范围。