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

时间:2015-11-04 11:30:41

标签: c# asp.net-mvc razor partial-views title


我试图从部分页面获取页面标题,但我不想在MVC中进行。你有什么想法吗?

child.cshtml中的

@{ViewBag.Title="this is child"}  > this is not working in a child

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

ViewBag.Title = ViewData["pagetitle"];
child.cshtml中的

ViewData["pagetitle"] = "this is child";

2 个答案:

答案 0 :(得分:9)

很遗憾,你不能在局部视图中这样做。

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

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

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

这可以这样实现:

<script type="text/javascript">
document.title = '@ViewBag.Title';
</script>

答案 1 :(得分:4)

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

相反,您可以使用javascript,如下所示:

document.title = "new title";