我有一个课程,想要创建,删除和编辑课程 但是当我想向我的会话中添加数据时有错误:“对象空引用”。 如果我从控制器中删除继承,我该如何处理呢?
我的数据是字符串值,如“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;
}
}
答案 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;
}
}
如果你不想要它,那么这门课程和方法并不是静态的。