如果我的问题描述性不够,我道歉。我有一个MVC应用程序,有多个公司帐户。所以我有公司用户,我有客户用户。客户用户决定他们想与哪家公司做生意并登录。他们显然可以先与company1做生意,然后注销并登录与公司2做生意。
我有_Layout.cshtml页面,在其中,我希望能够根据客户用户登录的公司自定义页面。起初,我创建了全局静态变量,但这不起作用,因为在user1登录到company1之后,当user2登录到company2时,它会将显示的信息更改为user1,所以突然他正在查看company2。
在我的布局页面中,我想显示公司名称等等。为了展示我先做了什么,我创建了这个类:
namespace Hylton
{
public class G
{
public static string OrgName
{
get;
set;
}
public static int OrgId
{
get;
set;
}
public static string OrgEmail
{
get;
set;
}
}
}
在我的_Layout.cshtml中我有这样的东西:
<li class="hi-logo">
<a href="~/" class="m-l-10">
@G.OrgName
</a>
</li>
每次都没有在数据库中查找,有没有一种好方法可以做到这一点?
答案 0 :(得分:0)
您要实现的目标是给定用户SessionState
。根据您的身份验证机制,您可以将其存储在MVC的实际会话中,例如用户登录后,在控制器中执行:
this.Session["CompanyName"] = "Shoes";
然后你可以在视图渲染中提取它:
public ViewResult Whatever()
{
var g = new G{OrgName = this.Session["CompanyName"]};
return this.View(g);
}
另一种选择是将其存储在cookie或身份验证令牌中。
但这个想法是相同的 - 用户登录,他们的浏览器(有时是您的服务器)会保留他们正在使用的这家公司的某些信息。