Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NETMVC。根据用户角色生成Razor视图_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

C# NETMVC。根据用户角色生成Razor视图

C# NETMVC。根据用户角色生成Razor视图,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我们面临以下问题。我们为我们的系统开发了一套登录后页面。用户可以有5个角色之一:免费用户类型1、高级用户类型1、免费用户类型2、高级用户类型2和管理员。 问题是,尽管每个角色的所有页面看起来几乎相同,但根据用户角色的不同,仍然有点不同(例如,链接指向不同的URL,或者在单击按钮时显示不同的模式,一些选项显示,一些隐藏)。 我们试图做的是将这些都包装在小的局部视图中,并根据用户角色呈现不同的局部视图。但它变得越来越复杂。 也许有某种设计模式或通用方法来处理这个问题? 谢谢 似乎是基于您的描述,您的

我们面临以下问题。我们为我们的系统开发了一套登录后页面。用户可以有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);
}
您可以实现一个。这可能包含用户切换逻辑。