为会话分配值,使对象引用不设置为MVC中的对象异常的实例

时间:2014-05-13 10:45:27

标签: c# .net asp.net-mvc session controller

问题陈述:

我正在尝试为MVC Controller中的会话对象分配一个值,因为对象引用没有设置为对象的实例,所以它会给出异常。

我有两个控制器

  1. MainController
  2. SecondaryController
  3. 当我在主控制器中为会话分配值时它工作正常。但如果我在辅助控制器中的 Test()方法中指定相同的值,则表示错误。

    我在这里做错了什么???

    主要控制器:

     public class MainController: Controller
         {
            SecondaryController secCont=new SecondaryController();
            public ActionResult Index(LoginModel loginModel)
              {
    
                if (ModelState.IsValid)
                    {
                     Session["LogID"] = 10;
                      //This is working fine.
                      //Instead of this i want call secCont.Test(); method where value for session assigned, it is giving error.
    
                    }
                  return View(loginModel);
    
               }
         }
    

    辅助控制器:

     public class SecondaryController: Controller
       {
         public void Test()
         {
            Session["LogID"] = 10;
            // Giving Error as **Object reference not set to an instance of an object.**
          }
    
        }
    

1 个答案:

答案 0 :(得分:12)

这是因为Session变量仅在Standard ASP.NET MVC Controller(主控制器)中可用。要在辅助控制器中访问会话变量,您应该使用

System.Web.HttpContext.Current.Session["LogID"] = 10;