在ASP.Net MVC中的视图页面上访问会话

时间:2014-01-13 10:06:27

标签: asp.net razor

有没有办法通过在控制器中创建通用方法来访问视图页面上的会话,也希望通过ASP.Net MVC中的常用方法访问控制器中的会话。

2 个答案:

答案 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"对象有两个可能的原因:

  1. 会话["密钥"]为空。
  2. 在View和/或Controller中对Session [" key"]的错误引用。
  3. 使用" 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"];
    }