在使用ASP.Net Core 2.0编写的应用程序中,如何在局部视图中写入全局ViewBag?部分得到它自己的本地ViewBag所以我在那里写的任何东西都不会被存储在它看起来的全局ViewBag中。
例如,让我们说" Home / Index"视图呈现部分" _TitleBar",在此部分中我们设置了ViewBag.PageName =" MyPage"。现在,稍后在同一个请求中,在" _Layout"我想渲染ViewBag.PageName中存储的任何值。这在上面的场景中不起作用。那么如何从我的" _TitleBar"访问全局ViewBag?这个价值可以在其他地方拿到吗?
目前,解决方法是将数据存储在TempData中,而不是全局数据。
答案 0 :(得分:0)
Razor渲染实际页面,然后是布局,然后渲染部分视图,这就是部分视图不能具有部分等功能的原因。您可以使用JavaScript
或JQuery
执行此操作,而无需依赖Razor。您所要做的就是在局部视图中添加脚本以更新PageName
。例如:
_Layout.cshtml
------------------
<title>Site Name | Page Name </title>
_partial.cshtml
<script type="text/javascript">
$(document).ready(function () {
document.title = "new title";
})
</script>