-1

我有一个班级,想在上面创建、删除和编辑会话,但是当我想向会话中添加数据时出现错误:“object null reference”。如果我从控制器中删除继承,我该如何处理?

我的数据是字符串值,例如“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;
      }
   }
4

1 回答 1

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;
  }
}

如果您不希望它是静态的,则类和方法不需要是静态的。

于 2012-09-19T12:20:42.593 回答