从ASP.Net Core中的局部视图写入全局ViewBag

时间:2017-11-15 05:43:41

标签: asp.net-core asp.net-core-mvc

在使用ASP.Net Core 2.0编写的应用程序中,如何在局部视图中写入全局ViewBag?部分得到它自己的本地ViewBag所以我在那里写的任何东西都不会被存储在它看起来的全局ViewBag中。

例如,让我们说" Home / Index"视图呈现部分" _TitleBar",在此部分中我们设置了ViewBag.PageName =" MyPage"。现在,稍后在同一个请求中,在" _Layout"我想渲染ViewBag.PageName中存储的任何值。这在上面的场景中不起作用。那么如何从我的" _TitleBar"访问全局ViewBag?这个价值可以在其他地方拿到吗?

目前,解决方法是将数据存储在TempData中,而不是全局数据。

1 个答案:

答案 0 :(得分:0)

Razor渲染实际页面,然后是布局,然后渲染部分视图,这就是部分视图不能具有部分等功能的原因。您可以使用JavaScriptJQuery执行此操作,而无需依赖Razor。您所要做的就是在局部视图中添加脚本以更新PageName。例如:

_Layout.cshtml
------------------
<title>Site Name | Page Name </title>

_partial.cshtml
<script type="text/javascript">
    $(document).ready(function () {
         document.title = "new title";
    })
</script>
相关问题