_Layout.cshtml MVC 4中的会话为null

时间:2016-05-26 06:24:32

标签: c# asp.net-mvc asp.net-mvc-4 session razor

我刚创建了一个演示MVC应用程序。它有两个控制器,int value1 = 0x13; int value2 = 0x31; byte[] mixedbytes = new byte[] { 0x09, (byte)value1, (byte)value2 }; HomeController。 这是ContactController代码:

HomeController

以下是public class HomeController : Controller { public ActionResult Index() { Session["Username"] = "Admin User"; return View(); } }

ContactController

以下是public class ContactController : Controller { public ActionResult Index() { return View(); } } 代码,其中显示_Layout.cshtml

Session["Username"]

现在,一旦我托管了应用程序,就会调用默认的 <div class="float-left"> <p class="site-title">@Session["Username"].ToString()</p> </div> 并设置会话变量。接下来,当我加载Home/Index控制器方法时,它会显示错误

  

对象引用未设置为对象的实例。

此行Contact/Index

此错误经常发生。任何人都知道我错过了什么?

1 个答案:

答案 0 :(得分:0)

创建ApplicationBaseController

public class ApplicationBaseController : Controller
{
    public ApplicationBaseController()
    {

    }
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        //Define your UserName
        Session["Username"] = "Admin User";
        //Some code if you want to add
        base.OnActionExecuted(filterContext);
    }
}

ApplicationBaseController继承您的控制器:

public class HomeController : ApplicationBaseController
{
    public ActionResult Index()
    {
        return View();
    }
}

public class ContactController : ApplicationBaseController
{
    public ActionResult Index()
    {
        return View();
    }
}

_Layout.cshtml

<div class="float-left">
   <p class="site-title">@Session["Username"]</p>
</div>

UPDATE:

<强>控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        //Define your UserName
        Session["Username"] = "Admin User";
        return View();
    }
}

_Layout.cshtml

<div class="float-left">
   <p class="site-title">@Session["Username"]</p>
</div>

如果不起作用(因为对我来说它可以正常工作),请提供完整的_layout.cshtml代码和Index.cshtml代码