2009-02-27 6 views
5

estoy recibiendo el siguiente aviso de validación XHTML en mi página maestra ASP.NET MVC:Elemento ocurre muy pocas veces, XHTML advertencia de validación en la página principal ASP.NET.MVC

validación (XHTML 1.0 Transitional): El 'título' del elemento ocurre muy pocas veces.

La etiqueta de título de la página maestra está incluida en ContentPlaceHolder en la etiqueta de cabecera, como se muestra en el código siguiente. La etiqueta de título en ContentPlaceHolder no se tiene en cuenta al realizar la validación, y no quiero agregar otra en la etiqueta de encabezado porque me quedarán dos etiquetas de título.

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

Un trabajo en torno a que he encontrado es utilizar la siguiente técnica en la etiqueta de la cabeza:

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

¿Es esta la mejor práctica para solucionar esta advertencia? No soy un gran fan de agregar el código excedente solo para pasar las advertencias de validación, pero viviré con él si no hay una mejor alternativa.

Respuesta

13

debe hacerse lo siguiente:

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

O como alternativa, establecer el título programattically de cada página.

Lo que sucede en su caso es que cuando se crea una nueva vista, crea elementos de contenido vacíos que anulan el contenido predeterminado en los marcadores de posición. Si elimina los bloques de contenido vacíos de la vista, se usará el contenido del marcador de posición predeterminado, pero luego no podrá establecer el contenido de la vista. Utilizando el código anterior puede anular un título predeterminado de cada vista e incluir scripts, etc. en el encabezado independientemente el uno del otro.

+0

Me sorprende que no sea la sintaxis predeterminada que generan al crear un nuevo proyecto ASP.NET-MVC. ¡Gracias por la rápida respuesta! – Blegger

+1

No lo generan de manera predeterminada porque el Título se puede establecer en la directiva de la página de vista o en muchas otras formas. –

+0

He visto los marcadores de contenido para el jefe, pero nunca uno para la etiqueta del título. Aunque suene estúpido como todos salen, es hermoso, jajaja. +1 – TheTXI

1

soluciones Aquí posibles son La primera solución es

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

segunda solución es, Compruebe si el cabeza etiqueta que tiene el atributo runat = "server", si no han fijado runat prperty significa que no es un problema más necesita eliminar la etiqueta runat.

Cuestiones relacionadas