如何在MVC中从部分页面设置页面标题

Cag*_*tay 6 c# asp.net-mvc partial-views title razor


我试图从部分页面获取页面标题但我不能在MVC中这样做.你有什么主意吗?

在child.cshtml中:

@{ViewBag.Title="this is child"}  > this is not working in a child
Run Code Online (Sandbox Code Playgroud)

我试图在viewpage.cshtml中获取ViewData信息:

ViewBag.Title = ViewData["pagetitle"];
Run Code Online (Sandbox Code Playgroud)

在child.cshtml中:

ViewData["pagetitle"] = "this is child";
Run Code Online (Sandbox Code Playgroud)

Jos*_*ard 9

不幸的是,你不能在局部视图中做到这一点.

原因是当视图解析器解析部分视图时,主布局(包含<title></title>标记)已经写入应用程序响应流,准备刷新到浏览器.

如果你真的需要那么我想你可以解析当前的响应流并使用正则表达式匹配和替换页面标题,但我不建议这样做,因为它效率很低.

正如其他人所说,你更好的选择(虽然不理想 - 一个原因是标题标签对搜索引擎的重要性)是使用Javascript设置标题.

这可以这样实现:

<script type="text/javascript">
document.title = '@ViewBag.Title';
</script>
Run Code Online (Sandbox Code Playgroud)


Vnu*_*uuk 4

如果布局中有标题,则像@{ ViewBag.Title = "..."; }在子视图中那样设置标题将不起作用。设置标题不是 PartalView 的责任。

相反,你可以使用 JavaScript,如下所示:

document.title = "new title";
Run Code Online (Sandbox Code Playgroud)