C# NETMVC。根据用户角色生成Razor视图
我们面临以下问题。我们为我们的系统开发了一套登录后页面。用户可以有5个角色之一:免费用户类型1、高级用户类型1、免费用户类型2、高级用户类型2和管理员。 问题是,尽管每个角色的所有页面看起来几乎相同,但根据用户角色的不同,仍然有点不同(例如,链接指向不同的URL,或者在单击按钮时显示不同的模式,一些选项显示,一些隐藏)。 我们试图做的是将这些都包装在小的局部视图中,并根据用户角色呈现不同的局部视图。但它变得越来越复杂。 也许有某种设计模式或通用方法来处理这个问题?C# NETMVC。根据用户角色生成Razor视图,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我们面临以下问题。我们为我们的系统开发了一套登录后页面。用户可以有5个角色之一:免费用户类型1、高级用户类型1、免费用户类型2、高级用户类型2和管理员。 问题是,尽管每个角色的所有页面看起来几乎相同,但根据用户角色的不同,仍然有点不同(例如,链接指向不同的URL,或者在单击按钮时显示不同的模式,一些选项显示,一些隐藏)。 我们试图做的是将这些都包装在小的局部视图中,并根据用户角色呈现不同的局部视图。但它变得越来越复杂。 也许有某种设计模式或通用方法来处理这个问题? 谢谢 似乎是基于您的描述,您的
谢谢 似乎是基于您的描述,您的描述并不是100%清楚,最好的方法是为不同的角色创建不同的局部视图 然后在登录时从数据库中获取用户角色,并根据角色返回不同的部分视图 如果您有多个部分视图,即每个用户角色有多个页面,则可以将该用户角色添加到会话或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);
if (HttpContext.Current.Request.Cookies["UserRole"] != null)
{
var userRole = HttpContext.Current.Request.Cookies["UserRole"].Value);
}
获取Cookie
var cookie = new HttpCookie("UserRole");
cookie.Value = GetUserRole();
cookie.Expires = DateTime.Now.AddDays(1);
HttpContext.Current.Response.Cookies.Add(cookie);
if (HttpContext.Current.Request.Cookies["UserRole"] != null)
{
var userRole = HttpContext.Current.Request.Cookies["UserRole"].Value);
}
您可以实现一个。这可能包含用户切换逻辑。