c# - 还有另一种方法可以检查用户所在的 .net 角色吗?

标签 c# asp.net asp.net-mvc asp.net-mvc-3

我有很多检查来确定用户的角色 然后分配一个角色编号。有什么办法吗 我可以简化检查吗?

        if (User.IsInRole("Super"))
        {
            ViewBag.Role = 30;
        }
        else if (User.IsInRole("Admin"))
        {
            ViewBag.Role = 20;
        }
        ...
        ...
        else if (User.IsInRole("Guest"))
        {
            ViewBag.Role = 10;
        }
        else
        {
            ViewBag.Role = 5;
        }

我需要做的是找到用户所在的最高角色,然后将该值分配给动态变量 ViewBag.Role。上面的代码确实有效,但所有 if 和 else 语句对我来说都不是好的编码习惯。

最佳答案

您可以向您的用户类添加一个属性:

    public virtual int RoleNumber
    {
        get
        {
            if (this.IsInRole("Super")) return 30;
            if (this.IsInRole("Admin")) return 20;
            if (this.IsInRole("Guest")) return 10;
            return 5;
        }
    }

然后在 View 中:

ViewBag.Role = User.RoleNumber

关于c# - 还有另一种方法可以检查用户所在的 .net 角色吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758857/

相关文章:

c# - 如何在 C# 中从指向内存流的 int 指针获取数据?

C# 控制台如何工作?

c# - 另一台机器的时间

asp.net - IIS - 打开基本身份验证会导致登录重定向循环

c# - 如何在 Asp.Net-MVC 中添加自定义 HTTP header

asp.net - 使用 ASP.NET 创建 Sprite 图像

c# - 您如何访问委托(delegate)被调用的次数?

c++ - 可以使用 TFS Build 自动安装 Visual Studio 2012 C++ Redistributable 吗?

c# - 如何在Web服务中使用WSDL生成的代理类?

javascript - 在页面加载时本地化/翻译单词