如何创建类来管理会话?

时间:2012-09-19 11:51:21

标签: asp.net-mvc-3

我有一个课程,想要创建,删除和编辑课程 但是当我想向我的会话中添加数据时有错误:“对象空引用”。 如果我从控制器中删除继承,我该如何处理呢?

我的数据是字符串值,如“name” 为什么这个语法:Session [name] = value;在控制器中工作正常但在我的类中不起作用并给我空引用错误?

public class StateManager : Controller
    {
       public  void RemoveFromApplication(string name)
     {
         Session.Remove(name);
     }
    public  void AddToApplication(string name, object value)
    { 
       //value like "name"
        Session[name]=value;
      }
   }

1 个答案:

答案 0 :(得分:0)

它可能不起作用,因为当MVC与当前路线不匹配时,控制器不会以相同的方式实例化。

您可以改为创建一个这样的静态类:

public static class SessionManager
{
  public static void RemoveFromApplication(string name)
  {
    HttpContext.Current.Session.Remove(name);
  }

  public static void AddToApplication(string name, object value)
  {
    HttpContext.Current.Session[name] = value;
  }
}

您还可以将方法中的会话作为参数传递:

public static class SessionManager
{
  public static void RemoveFromApplication(string name, HttpSessionStateBase session)
  {
    session.Remove(name);
  }

  public static void AddToApplication(string name, object value, HttpSessionStateBase session)
  {
    session[name] = value;
  }
}

如果你不想要它,那么这门课程和方法并不是静态的。