我有一个使用
的视图Session["Something"] = 1;
我在类库项目中有一个类,它试图使用
从会话中获取此值HttpContext.Current.Session["Something"]
但它重新回归null
。
public ActionResult Index()
{
Session["Something"] = 1;
var fromLib = (new MyLibClass()).GetSession("Something"); // null
var fromHere = Session["Something"]; // 1
}
// Class library project
public object GetSession(string key)
{
return HttpContext.Current.Session[key];
}
如何从会话中获取值?或者有没有办法保存值并在另一个地方检索(没有数据库或系统文件)
答案 0 :(得分:1)
您不需要Session
个对象。
尽管Session
适用于在asp.net应用程序中保存变量,但您可以实现自己的会话对象,以便在类库中使用,这些库轻巧,快速且代码内部:
Dictionary<string, object> MySession = new Dictionary<string, object>();
MySession.Add("VariableName", myObject);
MyLib.Pass(MySession);
尽可能保持更具体,即如果您只是将MyClass
传递到您的图书馆,那么:
Dictionary<string, MyClass> MySession = new Dictionary<string, MyClass>();
答案 1 :(得分:1)
有两个会议
Session (refers to the view session)
HttpContext.Current.Session (refers to context session)
使用HttpContext.Current.Session
无处不在,因为它们是相同的。我创建了一个类来帮助我按照我想要的方式访问会话值,所以我可以调用它而不用担心正确的会话。