Asp.net mvc 3 如何在mvc3 razor视图中使用会话变量持久化数据?
我正在使用Razor开发MVC3应用程序。在我的帐户控制器中,验证用户后,我将从数据库中获取用户ClientID。这里我想在会话变量中持久化ClientID。它在所有控制器和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
谢谢你的帮助 如果使用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感谢您的回复。。实际上,我们正在为我们的框架实现多租户访问。所以我对在控制器上持久化数据有点困惑。那么你能告诉我哪种方法更好吗?这可能会有用