Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 3 如何在mvc3 razor视图中使用会话变量持久化数据?_Asp.net Mvc 3_Session Variables - Fatal编程技术网

Asp.net mvc 3 如何在mvc3 razor视图中使用会话变量持久化数据?

Asp.net mvc 3 如何在mvc3 razor视图中使用会话变量持久化数据?,asp.net-mvc-3,session-variables,Asp.net Mvc 3,Session Variables,我正在使用Razor开发MVC3应用程序。在我的帐户控制器中,验证用户后,我将从数据库中获取用户ClientID。这里我想在会话变量中持久化ClientID。它在所有控制器和Razor视图中使用 我不知道实现这一点的最佳方法是什么,也不知道如何在会话变量中持久化数据。以及如何在整个控制器中使用会话变量中的持久化数据 谢谢你的帮助 如果使用ASP.NET表单身份验证,则用户名已存储在cookie中。您可以通过从控制器访问它 Controller.User.Identity.Name 可以将用户I

我正在使用Razor开发MVC3应用程序。在我的帐户控制器中,验证用户后,我将从数据库中获取用户ClientID。这里我想在会话变量中持久化ClientID。它在所有控制器和Razor视图中使用

我不知道实现这一点的最佳方法是什么,也不知道如何在会话变量中持久化数据。以及如何在整个控制器中使用会话变量中的持久化数据


谢谢你的帮助

如果使用ASP.NET表单身份验证,则用户名已存储在cookie中。您可以通过从控制器访问它

Controller.User.Identity.Name
可以将用户ID存储为用户名。当你打电话给

FormsAuthentication.RedirectFromLoginPage
给它一个ID而不是一个名字。然后可以使用上述方法找到ID,不需要额外的会话数据。如果您想在会话中存储某些内容,只需调用

Session["UserID"] = value;

从您的控制器。

我通常编写一个会话包装器,以便将来轻松访问它:

公共类SessionData
{
常量字符串ClientId\u KEY=“ClientId”;
公共静态int客户端ID
{
获取{return HttpContext.Current.Session[ClientId\u KEY]!=null?(int)HttpContext.Current.Session[ClientId\u KEY]:0;}
set{HttpContext.Current.Session[ClientId_KEY]=value;}
}
}
之后,您可以从以下任何位置访问它:

int-clientId=SessionData.clientId;
如果需要,您可以像这样在会话中使用整个对象


或者可以这样设置:
SessionData.ClientId=ClientId

感谢您的回复…基本上我们正在为我们的框架实现多租户访问。那么这次会议是个好办法?我根据数据库中的登录用户获取ClientID。那么如何将CliendID绑定到Session变量中呢?我不知道项目的所有含义和要求,但到目前为止,我没有发现使用Session有任何问题。我更新了我的答案,以展示如何使用包装器在会话中设置ClientId。编写包装器访问会话有什么好处您只有一个入口点。易于维护。IntellisenseThanks感谢您的回复。。实际上,我们正在为我们的框架实现多租户访问。所以我对在控制器上持久化数据有点困惑。那么你能告诉我哪种方法更好吗?这可能会有用