ASP.NET 2.0 ajoute la prise en charge intégrée de MasterPage, ce qui est très pratique pour nous. Cependant, après l'avoir utilisé pendant un certain temps, j'ai trouvé que MasterPage n'était pas si parfait : la MasterPage imbriquée ne peut pas prendre en charge l'interface au moment de la conception, et le problème de l'ajout de CSS à la page de contenu sera mentionné ci-dessous.
Habituellement, avant la version 2.0, la syntaxe pour ajouter une référence CSS à la page était la suivante :
<link rel="stylesheet" href="css/test.css" />
C'était à l'origine une pratique courante. Mais dans une sous-page de MasterPage, une situation très embarrassante se présente : où doit-on mettre le code ci-dessus ?
Car dans la page de contenu spécifique de MasterPage, seul le contenu de chaque balise <asp:Content /> peut être défini. Selon la pratique habituelle, nous ne pouvons pas contrôler le contenu <header/> de la page en aspx. Et cette balise <link/> doit être placée dans <header/>. J'ai essayé d'ajouter cette ligne de code dans <asp:Content />, mais cela provoquera une erreur.
Dans le même temps, nous ne pouvons pas placer un ContentPlaceHolder dans le <header/> de MasterPage pour le futur code de référence CSS.
Donc, ce que j'ai fait, c'est de définir une classe d'assistance comme suit :
classe publique statique ControlHelper
{
static public void AddStyleSheet (page page, chaîne cssPath)
{
Lien HtmlLink = new HtmlLink();
lien.Href = cssPath;
link.Attributes["rel"] = "feuille de style";
lien.Attributes["type"] = "text/css";
page.Header.Controls.Add(lien);
}
}
De cette façon, sur une page spécifique, nous pouvons ajouter des références CSS via le code suivant :
protected void Page_Load(object sender, EventArgs e)
{
ControlHelper.AddStyleSheet(this.Page, "css/projectPage.css");
}
De plus, ce code prend en charge l'utilisation dans des pages de contenu spécifiques ou dans une page maître imbriquée.
À ce stade, certaines personnes pourraient se demander pourquoi CSS devrait-il être séparé et chargé de cette manière ? Est-ce nécessaire ? Ne serait-il pas bien si je définissais le CSS de toutes les pages dans quelques fichiers CSS courants ?
En fait, les amis qui connaissent la production HTML standard du Web doivent savoir que dans un état relativement parfait, le HTML de la page et le CSS utilisé pour la présentation doivent être complètement séparés. Pour notre conception basée sur les standards du Web, nous créons généralement d'abord un code de positionnement pour chaque div de cadre dans la page maître, ainsi qu'un code de modification pour les parties d'en-tête et de pied de page. Ceux-ci sont utilisés par chaque page de contenu et seront placés dans un CSS unifié. Pour les autres pages de contenu spécifiques, chaque page aura sa propre mise en page de contenu et son style de modification, j'ai donc mis les parties spécifiques de chaque page spécifique dans son propre CSS. Cela forme un modèle CSS qui est fusionné couche par couche en fonction du niveau d'implémentation de la page maître (qui peut être imbriquée). L'avantage est qu'il réalise la séparation des responsabilités de chaque fichier CSS, ce qui le rend plus facile à comprendre et à maintenir.
Comme je n'ai pas été exposé à ASP.NET 2.0 depuis longtemps, ce qui précède n'est qu'une petite expérience personnelle. S'il existe une solution plus pratique, donnez-moi quelques conseils.
http://rchen.cnblogs.com/archive/2006/05/23/masterpage_with_css.html