ASP.NET MVC。根据用户角色生成Razor视图

时间:2016-05-19 09:51:28

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

我们面临以下问题。我们为系统开发了一组登录后页面。用户可以拥有以下五种角色之一:免费用户类型1,高级用户类型1,免费用户类型2,高级用户类型2和管理员。 问题在于,即使每个角色的所有页面看起来几乎都相同,但它仍然有点不同,具体取决于用户角色(例如链接指向不同的URL,或者单击按钮时显示不同的模式,一些选项显示,一些隐藏)。 我们要做的是将所有内容包装在小的局部视图中,并根据用户角色呈现不同的局部视图。但它变得越来越复杂。 也许有某种设计模式或一般方法来处理这个问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

根据您的描述似乎并非100%明确表示最佳方法是为不同角色创建不同的部分视图。

然后在登录时从DB获取用户角色,并根据角色返回不同的部分视图。

如果您有多个部分视图,即每个用户角色有多个页面,则可以将用户角色添加到会话或cookie中,这样您就不必再次访问数据库了。

如果是这种情况,我建议使用cookie方法。

设置会话

var userRole = 1;

Session["UserRole"] = userRole;

获取会话

var userRole = Session["UserRole"] as int?;

设置Cookie

 var cookie = new HttpCookie("UserRole");
            cookie.Value = GetUserRole();
            cookie.Expires = DateTime.Now.AddDays(1);
            HttpContext.Current.Response.Cookies.Add(cookie);

获取Cookie

if (HttpContext.Current.Request.Cookies["UserRole"] != null)
{
    var userRole = HttpContext.Current.Request.Cookies["UserRole"].Value);
}