use*_*489 7 session-variables asp.net-mvc-3
我正在使用Razor进行MVC3应用程序.验证用户后,在我的帐户控制器中,我从数据库获取用户ClientID.在这里,我想在Session变量中持久化ClientID.这是在所有控制器和Razor视图中使用的.
我不知道实现this的最佳方法是什么.如何在会话变量中保存数据.以及如何在控制器中的会话变量中使用持久化数据.
谢谢你的帮助..
Dmi*_*try 18
我通常会编写一个Session包装器,以便将来轻松访问它:
public class SessionData
{
const string ClientId_KEY = "ClientId";
public static int ClientId
{
get { return HttpContext.Current.Session[ClientId_KEY] != null ? (int)HttpContext.Current.Session[ClientId_KEY] : 0; }
set { HttpContext.Current.Session[ClientId_KEY] = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以从以下任何地方访问它:
int clientId = SessionData.ClientId;
Run Code Online (Sandbox Code Playgroud)
如果你想,你可以在Session中使用整个对象.
或者您可以这样设置: SessionData.ClientId = clientId;
如果您使用 ASP.NET 表单身份验证,则用户名已存储在 cookie 中。您可以通过以下方式从控制器访问它
Controller.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
可以将用户 ID 存储为用户名。当你调用类似的东西时
FormsAuthentication.RedirectFromLoginPage
Run Code Online (Sandbox Code Playgroud)
为其提供 ID 而不是名称。然后可以使用上述方法找到 ID,不需要额外的会话数据。如果你想在会话中存储一些东西,只需调用
Session["UserID"] = value;
Run Code Online (Sandbox Code Playgroud)
来自您的控制器。
| 归档时间: |
|
| 查看次数: |
15975 次 |
| 最近记录: |