非常简单的问题。
我的布局页面看起来像
@RenderBody()
@{
if (ViewBag.IsInternal)
{
//do something here
}
}
部分看起来像
@{
ViewBag.IsInternal = false;
}
它正在做我认为它应该做的事情吗?基本上,如果在局部设置了ViewBag.IsInternal,我可以在布局中读取该设置值。
答案 0 :(得分:1)
您的部分视图不会获得自己的ViewBag,因此修改它不会影响布局类中的ViewBag。
但是,您可以将其作为参考传递到部分视图中,并从部分视图中修改ViewBag布局。
<强>布局强>
@{Html.RenderPartial("PartialView", Model, new ViewDataDictionary { {"LayoutViewBag", ViewBag}});
<强>部分强>
@{
var layoutViewBag = ((dynamic)ViewData["LayoutViewBag"]);
layoutViewBag.IsInternal = true;
}
答案 1 :(得分:0)
您可以使用Html.ViewContext.Controller.ViewBag
来访问“共享&#39; ViewBag。这是一个我只想包含Pinterest&#39; Javascript(在页面底部),如果我使用了Pinterest按钮。
if (Html.ViewContext.Controller.ViewBag.Pinterest == true)
{
<text>
<script type="text/javascript" async defer src="//assets.pinterest.com/js/pinit.js"></script>
</text>
}
然后你当然用
设置它 Html.ViewContext.Controller.ViewBag.Pinterest = true;