元素'标题'出现次数太少,ASP.NET.MVC母版页中的XHTML验证警告

时间:2009-02-27 17:13:44

标签: asp.net-mvc

我在ASP.NET MVC母版页中收到以下XHTML验证警告:

验证(XHTML 1.0 Transitional):元素'标题'出现的次数太少。

母版页的标题标签包含在head标签的ContentPlaceHolder中,如下面的代码所示。执行验证时不考虑ContentPlaceHolder中的title标记,我不想在head标记中添加另一个标记标记,因为那样我将留下两个标题标记。

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <asp:ContentPlaceHolder ID="head" runat="server">
        <title></title>
    </asp:ContentPlaceHolder>
</head>

我发现的一个解决方法是在head标签中使用以下技术:

<% if (false) { %>
    <title></title>
<% } %>

这是解决此警告的最佳做法吗?我不是为了通过验证警告而添加多余代码的忠实粉丝,但如果没有更好的替代方案,我将继续使用它。

2 个答案:

答案 0 :(得分:14)

请改为:

<head>
    <title><asp:ContentPlaceHolder ID="title" runat="server">Default Page Title Here</asp:ContentPlaceHolder></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <asp:ContentPlaceHolder ID="head" runat="server"></asp:ContentPlaceHolder>
</head>

或者作为替代,从每个页面以编程方式设置标题。

在您的情况下发生的情况是,创建新视图时,它会创建空内容项,以覆盖占位符中的默认内容。如果从视图中删除空的内容块,将使用默认的占位符内容,但是您无法从视图中设置内容。使用上面的代码,您可以覆盖每个视图中的默认标题,并在头部包含脚本等,彼此独立。

答案 1 :(得分:1)

这里可能的解决方案是 第一个解决方案是

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<asp:ContentPlaceHolder ID="head" runat="server">
    //<title></title> - this line should be removed.
</asp:ContentPlaceHolder>

第二个解决方案是, 检查 head 标记是否具有属性 runat =“server”,如果没有设置runat prperty意味着没有问题,则需要删除runat标记