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