[英]Session null in _Layout.cshtml MVC 4
我刚刚创建了一个演示MVC应用程序。 它有两个控制器, 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();
}
}
这是我正在显示Session["Username"]
的_Layout.cshtml
代码:
<div class="float-left">
<p class="site-title">@Session["Username"].ToString()</p>
</div>
现在,一旦托管了应用程序,就会调用默认的Home/Index
并设置会话变量。 接下来,当我加载Contact/Index
控制器方法时,它将显示错误
你调用的对象是空的。
在此行<p class="site-title">@Session["Username"].ToString()</p>
经常发生此错误。 有人知道我想念什么吗?
创建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>
控制器:
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
代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.