繁体   English   中英

_Layout.cshtml MVC 4中的会话为空

[英]Session null in _Layout.cshtml MVC 4

我刚刚创建了一个演示MVC应用程序。 它有两个控制器, HomeControllerContactController 这是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM