Dans votre page maître créer l'espace réservé suivant dans la section <head>
.
page principale
<asp:ContentPlaceHolder ID="HeadContent" runat="server"></asp:ContentPlaceHolder>
Ensuite, à l'intérieur de votre contrôleur, vous devez déterminer la liste des fichiers .css à utiliser ainsi que de créer une chaîne que les vues peuvent utiliser pour placer facilement le contenu dans la page . Voici ce que j'ai utilisé.
Contrôleur
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
List<string> css = new List<string>()
{
"one.css",
"two.css",
"three.css",
"four.css"
};
IList<string> cssTags = new List<string>();
StringBuilder cssTag = new StringBuilder();
css.ForEach(c =>
{
cssTag.AppendLine(string.Format(@"<link href=""{0}"" rel=""stylesheet"" type=""text/css"" />", HttpUtility.HtmlEncode(c)));
});
ViewData["css"] = cssTag.ToString();
return View();
}
ensuite dans votre vue il suffit de placer le follwing
Voir
<asp:Content ID="headContent" ContentPlaceHolderID="HeadContent" runat="server">
<%= ViewData["css"] %>
</asp:Content>
La raison pour laquelle je construis la liste des Css à l'intérieur du contrôleur puis créez une chaîne que la vue utilise, car je veux que les vues soient b E aussi stupide que possible. Une option serait de simplement placer la liste des fichiers .css dans le ViewData
lui-même, puis laisser la vue faire la boucle et créer la balise link
, mais il est préférable de le faire ailleurs si possible.
Une autre option pour utiliser ViewData
consiste à utiliser une vue fortement typée avec une propriété de chaîne, puis la vue sélectionne ce type. Personnellement, je n'utilise pas le dictionnaire ViewData
. Au lieu de cela, toutes mes vues sont fortement typées.
:(vote pour un lien apparemment utile. –