我刚创建了一个演示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
此错误经常发生。任何人都知道我错过了什么?
答案 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>
<强>控制器:强>
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
代码