ASP.NET 2.0 agrega soporte integrado para MasterPage, lo cual es una gran conveniencia para nosotros. Sin embargo, después de usarlo durante un período de tiempo, descubrí que MasterPage no es tan perfecto: MasterPage anidado no puede admitir la interfaz en tiempo de diseño y el problema de agregar CSS a la página de contenido se mencionará a continuación.
Por lo general, antes de la versión 2.0, la sintaxis para agregar una referencia CSS a la página era la siguiente:
<link rel="stylesheet" href="css/test.css" />
Originalmente era una práctica común. Pero en una subpágina de MasterPage surge una situación muy embarazosa: ¿dónde deberíamos colocar el código anterior?
Porque en la página de contenido específica de MasterPage, solo se puede definir el contenido de cada etiqueta <asp:Content />. Según la práctica habitual, no podemos controlar el contenido <header/> de la página en aspx. Y esta etiqueta <link/> debe colocarse dentro de <header/>. Intenté agregar esta línea de código dentro de <asp:Content />, pero generará un error.
Al mismo tiempo, no podemos colocar un ContentPlaceHolder dentro del <header/> de MasterPage para futuro código de referencia CSS.
Entonces, lo que hice fue definir una clase auxiliar de la siguiente manera:
clase pública estática ControlHelper
{
AddStyleSheet público estático vacío (página de página, cadena cssPath)
{
Enlace HtmlLink = nuevo HtmlLink();
enlace.Href = cssPath;
link.Attributes["rel"] = "hoja de estilo";
link.Attributes["tipo"] = "texto/css";
página.Encabezado.Controles.Agregar(enlace);
}
}
De esta forma, en una página específica, podemos agregar referencias CSS a través del siguiente código:
protected void Page_Load(object sender, EventArgs e)
{
ControlHelper.AddStyleSheet(esta.Página, "css/projectPage.css");
}
Además, este código admite el uso en páginas de contenido específicas o en una página maestra anidada.
En este punto, algunas personas pueden preguntarse, ¿por qué CSS debería separarse y cargarse de esta manera? ¿Es necesario? ¿No sería bueno si definiera el CSS para todas las páginas en algunos archivos CSS comunes?
De hecho, los amigos que estén familiarizados con la producción HTML estándar web deben saber que en un estado relativamente perfecto, el HTML de la página y el CSS utilizado para la presentación deben estar completamente separados. Para nuestro diseño basado en estándares web, generalmente primero creamos un código de posicionamiento para cada div de marco en la página maestra, así como un código de modificación para las partes del encabezado y pie de página. Estos son utilizados por todas las páginas de contenido y se colocarán en un CSS unificado. Para otras páginas de contenido específico, cada página tendrá su propio diseño de contenido y estilo de modificación diferentes, por lo que coloco las partes específicas de cada página específica en su propio CSS. Esto forma un modelo CSS que se fusiona capa por capa según el nivel de implementación de la página maestra (que puede anidarse). La ventaja es que realiza la separación de responsabilidades de cada archivo CSS, lo que facilita su comprensión y mantenimiento.
Como no he estado expuesto a ASP.NET 2.0 durante mucho tiempo, lo anterior es solo una pequeña experiencia personal. Si hay una solución más conveniente, por favor deme algún consejo.
http://rchen.cnblogs.com/archive/2006/05/23/masterpage_with_css.html