Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 某些ViewBag数据可在_Layout.cshtml中访问,但不在视图中?_Asp.net Mvc_Razor_Viewbag - Fatal编程技术网

Asp.net mvc 某些ViewBag数据可在_Layout.cshtml中访问,但不在视图中?

Asp.net mvc 某些ViewBag数据可在_Layout.cshtml中访问,但不在视图中?,asp.net-mvc,razor,viewbag,Asp.net Mvc,Razor,Viewbag,在我的\u Layout.cshtml中,我将一些会话数据存储在视图包中,如下所示: if (Session["SiteSession"] != null) { SiteSession siteSession = (SiteSession)Session["SiteSession"]; ViewBag.SiteSession = siteSession; } 到目前为止,它一直工作得很好 直到现在。我有一个视图,它基于ViewBag.SiteSession.IsAdmin,显示

在我的
\u Layout.cshtml
中,我将一些会话数据存储在
视图包中,如下所示:

if (Session["SiteSession"] != null)
{
    SiteSession siteSession = (SiteSession)Session["SiteSession"];
    ViewBag.SiteSession = siteSession;
}
到目前为止,它一直工作得很好

直到现在。我有一个视图,它基于
ViewBag.SiteSession.IsAdmin
,显示一些数据并向管理员打开某些控件,由于某些原因,该值不可访问(或根据intellisense,为
null
):

RuntimeBinderException:无法对空引用执行运行时绑定


有人有这个问题吗?或者也许知道问题的根源在哪里?非常感谢您的帮助。

事实证明,我必须更改ViewBag.SiteSession开始时设置的方式


我的同事将该代码放在
\u Layout.cshtml
中,此时该代码本应位于我们的
BaseController
中,并在
OnAuthorization()期间执行。
ViewBag
ViewData
对象(它只是一个字典)的动态包装器,用于在控制器及其视图之间进行数据通信。为此,它是一个极好的工具,非常有用但是,您不能使用
ViewBag
在多个ActionMethods之间传递数据。

要完成此操作,必须使用存储在会话中的
TempData


可以找到类似问题的先前答案。

尝试((SiteSession)ViewBag.SiteSession)。我无意中发现,有人发布了该答案,然后将其删除。这对这个问题既不起作用也没有意义。是的,你在我写的时候发的。很高兴你明白了。