Элемент title встречается слишком мало раз, предупреждение проверки XHTML на главной странице ASP.NET.MVC

Я получаю следующее предупреждение проверки XHTML на моей главной странице ASP.NET MVC:

Проверка (XHTML 1.0 Transitional): элемент «title» встречается слишком мало раз.

Тег заголовка для главной страницы включен в ContentPlaceHolder в теге заголовка, как показано в приведенном ниже коде. Тег заголовка в ContentPlaceHolder не учитывается при выполнении проверки, и я не хочу просто добавлять еще один в тег заголовка, потому что тогда у меня останутся два тега заголовка.

<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)

Решение

Вместо этого сделайте это:

<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>

Или, как альтернатива, задайте заголовок программно для каждой страницы.

Что происходит в вашем случае, так это то, что когда создается новое представление, оно создает пустые элементы содержимого, которые заменяют содержимое по умолчанию в заполнителях. Если вы удалите пустые блоки содержимого из представления, будет использоваться содержимое заполнителя по умолчанию, но тогда вы не сможете установить содержимое из представления. Используя приведенный выше код, вы можете переопределить заголовок по умолчанию для каждого представления и включить скрипты и т. Д. В заголовок независимо друг от друга.

Здесь возможные решения: Первое решение -

<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>

второе решение, Проверьте , находится ли головка тег , имеющий атрибут RUNAT = «сервер» , если не установлены RUNAT средства prperty не проблема еще нужно , чтобы удалить RUNAT тега .