如何在整个会话期间将值存储在MVC中的任何位置?

时间:2015-10-16 06:16:04

标签: c# asp.net-mvc session-variables

嘿,伙计们需要帮助

我希望在我的MVC项目中通过会话(如UserId,EmailId,RoleId等)存储少量值。

现在我正在为此目的创建会话变量并将所有这些值存储在会话变量中,是否有任何其他方法在整个会话中存储值,因为我使用会话变量读取并不安全,而viewdata,tempdata, viewbag商店数据暂时

1 个答案:

答案 0 :(得分:0)

您可以创建自定义对象并将其存储在HttpContext中。

在global.asax中,挂钩OnSessionStart事件

void OnSessionStart(...)
{
    HttpContext.Current.Session.Add("__CustomUserData", new UserDataObject());
}

从HttpContext.Current属性!= null的代码中的任何位置,您都可以检索该对象。在我的项目中创建了一个扩展

public static UserDataObject GetCustomUserDataObject(this HttpContext current)
{
    return current != null ? (UserDataObject)current.Session["__CustomUserData"] : null;
}

在您的控制器或管理员中,您可以按照以下方式访问它:

var userData = HttpContext.Current.GetCustomUserDataObject();

REMARK:

但是,对于默认的userId和userName,我建议使用Mvc身份系统(http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity