ASP.NET 2.0 adiciona suporte integrado a MasterPage, o que é uma grande conveniência para nós. No entanto, depois de usá-lo por um período de tempo, descobri que MasterPage não é tão perfeito: o MasterPage aninhado não suporta a interface de tempo de design, e o problema de adicionar CSS à página de conteúdo será mencionado abaixo.
Normalmente, antes da versão 2.0, a sintaxe para adicionar uma referência CSS à página era a seguinte:
<link rel="stylesheet" href="css/test.css" />
Originalmente era uma prática comum. Mas numa subpágina da MasterPage surge uma situação muito embaraçosa: onde devemos colocar o código acima?
Porque na página de conteúdo específica da MasterPage, apenas o conteúdo de cada tag <asp:Content /> pode ser definido. De acordo com a prática usual, não podemos controlar o conteúdo <header/> da página em aspx. E esta tag <link/> deve ser colocada dentro de <header/>. Tentei adicionar esta linha de código dentro de <asp:Content />, mas isso gerará um erro.
Ao mesmo tempo, não podemos colocar um ContentPlaceHolder dentro do <header/> da MasterPage para futuro código de referência CSS.
Então o que fiz foi definir uma classe auxiliar da seguinte forma:
static public class ControlHelper
{
static public void AddStyleSheet(Página página, string cssPath)
{
LinkHtmlLink = newHtmlLink();
link.Href=cssPath;
link.Attributes["rel"] = "folha de estilo";
link.Attributes["type"] = "texto/css";
página.Header.Controls.Add(link);
}
}
Desta forma, em uma página específica, podemos adicionar referências CSS através do seguinte código:
protected void Page_Load(object sender, EventArgs e)
{
ControlHelper.AddStyleSheet(this.Page, "css/projectPage.css");
}
Além disso, este código suporta o uso em páginas de conteúdo específicas ou em uma página mestra aninhada.
Neste ponto, algumas pessoas podem perguntar: por que o CSS deveria ser separado e carregado assim? É necessário? Não seria legal se eu definisse o CSS de todas as páginas em alguns arquivos CSS comuns?
Na verdade, amigos familiarizados com a produção de HTML padrão da web devem saber que, em um estado relativamente perfeito, o HTML da página e o CSS usado para apresentação devem estar completamente separados. Para nosso design baseado em padrões web, geralmente criamos primeiro um código de posicionamento para cada div de quadro na página mestra, bem como um código de modificação para as partes de cabeçalho e rodapé. Eles são usados por todas as páginas de conteúdo e serão colocados em um CSS unificado. Para outras páginas de conteúdo específico, cada página terá seu próprio layout de conteúdo e estilo de modificação diferente, então coloco as partes específicas de cada página específica em seu próprio CSS. Isso forma um modelo CSS que é mesclado camada por camada de acordo com o nível de implementação da Master Page (que pode ser aninhada). A vantagem é que ele realiza a separação de responsabilidades de cada arquivo CSS, facilitando seu entendimento e manutenção.
Como não tenho contato com o ASP.NET 2.0 há muito tempo, o que foi dito acima é apenas uma pequena experiência pessoal. Se houver uma solução mais conveniente, por favor, me dê alguns conselhos.
http://rchen.cnblogs.com/archive/2006/05/23/masterpage_with_css.html