在contentplaceholder中添加标题会添加第二个空标题标记

Bor*_*ens 5 asp.net-mvc title

我的母版页在head标签中有一个contentplaceholder.

因为我希望我的页面标题代表当前页面的功能,并且因为我希望用用户的语言翻译标题,所以我在页面的head的contentplaceholder中添加了一个标题标签.除了现在出现第二个空的标题标签,当然无效之外,所有这些都很快乐.

任何想法如何解决这个问题?

Zha*_*uid 7

根据W3C规范:

每个HTML文档必须在HEAD部分中有一个TITLE元素.

因此,ASP.Net平台符合标准并在页面中添加空标题标记以帮助您实现有效标记 - 它不知道您将通过内容占位符添加标记.

在经典的ASP.Net下,您的选择是:

  1. 使用@page指令标题来设置此标记的内容
  2. 使用代码后面的Page.Title属性以编程方式设置值.

如果您使用的是ASP.Net MVC,则默认的Site.Master文件具有以下默认文本:

<title><%= Html.Encode(ViewData["Title"]) %></title>
Run Code Online (Sandbox Code Playgroud)

默认控制器有:

ViewData["Title"] = "Home";
Run Code Online (Sandbox Code Playgroud)

在操作结果中,再次允许以编程方式访问页面标题.

通常我使用HeadContent内容占位符来添加特定于页面的静态脚本和css链接.


Hel*_*ant 5

我遇到了同样的问题,并找到了一个似乎有效的解决方案。这很hacky,但同时也很简单。只需在头部添加另一个标题标签,在其中放置一个 runat="server" 属性,然后将其可见性设置为 false:

<title visible="false" runat="server"><%-- hack to turn the auto title off --%></title>
Run Code Online (Sandbox Code Playgroud)