In un .NET MVC4
progetto come @Styles.Render
funziona?
Voglio dire, in @Styles.Render("~/Content/css")
quale file sta chiamando?
Non ho un file o una cartella chiamata "css" nella mia Content
cartella.
In un .NET MVC4
progetto come @Styles.Render
funziona?
Voglio dire, in @Styles.Render("~/Content/css")
quale file sta chiamando?
Non ho un file o una cartella chiamata "css" nella mia Content
cartella.
Risposte:
Sta chiamando i file inclusi in quel particolare bundle che è dichiarato all'interno della BundleConfig
classe nella App_Start
cartella.
In quel caso particolare La chiamata a @Styles.Render("~/Content/css")
sta chiamando "~ / Content / site.css".
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
controllo dei *.*
file.
Fai attenzione alla distinzione tra maiuscole e minuscole. Se hai un file
/Content/bootstrap.css
e reindirizzi nel tuo Bundle.config a
.Include ( "~ / Contenuti / Bootstrap.css")
non caricherà il CSS.
Un po 'in ritardo alla festa. Ma sembra che nessuno abbia menzionato il
raggruppamento e la minificazione di StyleBundle
, quindi ...
@Styles.Render("~/Content/css")
chiama Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
che a sua volta chiama
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
combina e minimizza efficacemente bootstrap.css
e Site.css
in un singolo file,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Ma ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
solo quando debug
è impostato su false
in Web.config
.
Altrimenti bootstrap.css
e Site.css
sarà servito individualmente.
Non raggruppato né minimizzato:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Come definito in App_start.BundleConfig, è solo una chiamata
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Non succede nulla anche se rimuovi quella sezione.
Polo Non userei i bundle in MVC per diversi motivi. Non funziona nel tuo caso perché devi impostare una classe BundleConfig personalizzata nella cartella Apps_Start. Questo non ha senso quando puoi semplicemente aggiungere uno stile nella testa del tuo html in questo modo:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Puoi anche aggiungerli a un Layout.cshtml o a una classe parziale richiamata da tutte le tue visualizzazioni e rilasciata in ogni pagina. Se i tuoi stili cambiano, puoi facilmente cambiare il nome e il percorso senza dover ricompilare.
L'aggiunta di collegamenti hardcoded ai CSS in una classe interrompe anche l'intero scopo della separazione dell'interfaccia utente e del design dal modello dell'applicazione. Inoltre, non vuoi che i percorsi dei fogli di stile codificati siano gestiti in c # perché non puoi più creare "skin" o modelli di stile separati per dire diversi dispositivi, temi, ecc. In questo modo:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Usando questo sistema e Razor ora puoi cambiare Skin Path da un database o dalle impostazioni dell'utente e cambiare l'intero design del tuo sito web semplicemente cambiando il percorso in modo dinamico.
Lo scopo del CSS 15 anni fa era quello di sviluppare "skin" di fogli di stile controllati dall'utente e controllati dall'applicazione per i siti in modo da poter cambiare l'aspetto dell'interfaccia utente e sentirti separato dall'applicazione e riutilizzare il contenuto indipendentemente dalla struttura dei dati. .... ad esempio una versione stampabile, mobile, versione audio, raw xml, ecc.
Tornando ora a questo sistema di percorsi "vecchio stile" e codificato usando classi C #, stili rigidi come Bootstrap e fondendo i temi dei siti con il codice dell'applicazione, siamo tornati indietro nel tempo alla creazione dei siti Web nel 1998.
minification
allora? : s / :(
Ho fatto tutto il necessario per aggiungere il raggruppamento a un Web MVC 3 (sono nuovo alla soluzione esistente). Styles.Render
non ha funzionato per me. Alla fine ho scoperto che mi mancava semplicemente un colon. In una pagina principale: <%: Styles.Render("~/Content/Css") %>
sono ancora confuso sul perché (sulla stessa pagina) <% Html.RenderPartial("LogOnUserControl"); %>
funziona senza i due punti.