有没有办法通过在控制器中创建通用方法来访问视图页面上的会话,也希望通过ASP.Net MVC中的常用方法访问控制器中的会话。
答案 0 :(得分:4)
查看:
@{ var sessionVar = Session["key"]; //it's object }
控制器:
public ActionResult Method() {
var sessionVar = this.Session["..."]; //
}
调用此对象的常用方法是:HttpContext.Current.Session
我不知道'共同'是什么意思。无论您在何处调用它,所提供的会话对象对于用户会话都是通用的。
但实际上你不应该尝试使用会话它很丑 - 尝试对ViewBag / ViewData进行一些搜索,然后尝试搜索为什么你不应该使用它们。 :)
答案 1 :(得分:0)
对MVC来说是新手,但我想我知道你正在尝试做什么。你不需要创造一个共同的'实现这一目标的方法。 @trn解决方案应该可以工作但是如果在" View"中访问它可能会抛出Null引用异常。 不使用" HttpContext.Current.Session"对象有两个可能的原因:
使用" HttpContext.Current.Session" object是实现您正在寻找的内容的绝佳方式,并确保 Session [" key"]不为null 。例如:
查看:
@{
var sessionVar = Session["key"]; // might throw a NullReferenceException
}
视图的替代方案:
@{
var sessionVar = HttpContext.Currrent.Session["key"]; // assuming correct reference to Session["key"]
}
控制器:
Public ActionResult someMethod()
{
var sessionVar = System.Web.HttpContext.Current.Session["key"];
}