Dans un .NET MVC4
projet, comment ça @Styles.Render
marche?
Je veux dire, dans @Styles.Render("~/Content/css")
quel fichier appelle-t-il?
Je n'ai pas de fichier ou de dossier appelé "css" dans mon Content
dossier.
Dans un .NET MVC4
projet, comment ça @Styles.Render
marche?
Je veux dire, dans @Styles.Render("~/Content/css")
quel fichier appelle-t-il?
Je n'ai pas de fichier ou de dossier appelé "css" dans mon Content
dossier.
Réponses:
Il appelle les fichiers inclus dans ce bundle particulier qui est déclaré dans la BundleConfig
classe du App_Start
dossier.
Dans ce cas particulier, l'appel à @Styles.Render("~/Content/css")
appelle "~ / Content / site.css".
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
charge les *.*
fichiers.
Faites attention à la sensibilité à la casse. Si vous avez un fichier
/Content/bootstrap.css
et vous redirigez dans votre Bundle.config vers
.Include ("~ / Content / Bootstrap.css")
il ne chargera pas le css.
Un peu tard pour la fête. Mais il semble que personne n'ait mentionné le
regroupement et la minification de StyleBundle
, alors ..
@Styles.Render("~/Content/css")
appelle Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
qui à son tour appelle
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
combine et réduit efficacement bootstrap.css
et Site.css
en un seul fichier,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Mais ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
uniquement lorsque debug
est défini sur false
in Web.config
.
Dans le cas contraire bootstrap.css
et Site.css
sera servi individuellement.
Ni groupé, ni minifié:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Comme défini dans App_start.BundleConfig, il s'agit simplement d'appeler
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Rien ne se passe même si vous supprimez cette section.
Polo Je n'utiliserais pas de bundles dans MVC pour plusieurs raisons. Cela ne fonctionne pas dans votre cas, car vous devez configurer une classe BundleConfig personnalisée dans votre dossier Apps_Start. Cela n'a aucun sens lorsque vous pouvez simplement ajouter un style dans la tête de votre html comme ceci:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Vous pouvez également les ajouter à une classe Layout.cshtml ou partielle appelée depuis toutes vos vues et déposée dans chaque page. Si vos styles changent, vous pouvez facilement changer le nom et le chemin sans avoir à recompiler.
L'ajout de liens codés en dur à CSS dans une classe rompt également avec le but de la séparation de l'interface utilisateur et de la conception du modèle d'application. Vous ne voulez pas non plus que les chemins de feuille de style codés en dur soient gérés en c # car vous ne pouvez plus créer de "skins" ou de modèles de style séparés pour différents appareils, thèmes, etc., comme ceci:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
En utilisant ce système et Razor, vous pouvez désormais désactiver le Skin Path à partir d'une base de données ou d'un paramètre utilisateur et modifier la conception globale de votre site Web en changeant simplement le chemin de manière dynamique.
Il y a 15 ans, CSS avait pour objectif de développer des "habillages" de feuilles de style contrôlés par l'utilisateur et par l'application pour les sites afin que vous puissiez changer l'apparence de l'interface utilisateur séparément de l'application et réutiliser le contenu indépendamment de la structure des données. .... par exemple une version imprimable, mobile, version audio, xml brut, etc.
En revenant maintenant à ce système de chemin d'accès "à l'ancienne", codé en dur utilisant des classes C #, des styles rigides comme Bootstrap, et en fusionnant les thèmes des sites avec le code d'application, nous sommes revenus à la façon dont les sites Web ont été construits en 1998.
minification
? : s / :(
J'ai fait toutes les choses nécessaires pour ajouter le bundling à un site Web MVC 3 (je suis nouveau dans la solution existante). Styles.Render
n'a pas fonctionné pour moi. J'ai finalement découvert qu'il me manquait simplement deux points. Dans une page maître: <%: Styles.Render("~/Content/Css") %>
je ne comprends toujours pas pourquoi (sur la même page) <% Html.RenderPartial("LogOnUserControl"); %>
fonctionne sans les deux-points.