首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在mvc3剃刀视图中使用会话变量持久化数据?

如何在mvc3剃刀视图中使用会话变量持久化数据?
EN

Stack Overflow用户
提问于 2012-07-25 14:13:57
回答 2查看 17.3K关注 0票数 7

我正在与剃刀在MVC3应用程序工作。在我的帐户控制器中,在验证用户之后,我从数据库中获取用户ClientID。在这里,我想在会话变量中持久化ClientID。它在all控制器和Razor视图中使用。

我不知道实现this.OR的最佳方式是什么,如何在会话变量中持久化数据。以及如何跨控制器使用会话变量中的持久化数据。

谢谢你的帮助。。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-25 14:22:53

如果使用的是ASP.NET窗体身份验证,则用户名已存储在cookie中。您可以通过以下方式从控制器访问它

代码语言:javascript
代码运行次数:0
运行
复制
Controller.User.Identity.Name

可以将用户ID存储为用户名。当你调用类似于

代码语言:javascript
代码运行次数:0
运行
复制
FormsAuthentication.RedirectFromLoginPage

为它提供ID,而不是名称。然后,可以使用上面的方法找到ID,而不需要额外的会话数据。如果要在会话中存储某些内容,只需调用

代码语言:javascript
代码运行次数:0
运行
复制
Session["UserID"] = value;

从你的控制器。

票数 2
EN

Stack Overflow用户

发布于 2012-07-25 14:24:46

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

代码语言:javascript
代码运行次数:0
运行
复制
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; }
    }
}

之后,您可以从任何地方访问它,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
int clientId = SessionData.ClientId;

如果你愿意,你可以像这样在会话中使用整个对象。

或者您可以这样设置它:SessionData.ClientId = clientId;

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11643721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档