.NET MVC4
Wie funktioniert es in einem Projekt @Styles.Render
?
Ich meine, in @Styles.Render("~/Content/css")
welcher Datei ruft es auf?
Ich habe keine Datei oder einen Ordner namens "css" in meinem Content
Ordner.
.NET MVC4
Wie funktioniert es in einem Projekt @Styles.Render
?
Ich meine, in @Styles.Render("~/Content/css")
welcher Datei ruft es auf?
Ich habe keine Datei oder einen Ordner namens "css" in meinem Content
Ordner.
Antworten:
Es ruft die Dateien auf, die in diesem bestimmten Bundle enthalten sind, das in der BundleConfig
Klasse im App_Start
Ordner deklariert ist .
In diesem speziellen Fall ruft der @Styles.Render("~/Content/css")
Aufruf von "~ / Content / site.css" auf.
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
über *.*
Dateien.
Achten Sie auf Groß- und Kleinschreibung. Wenn Sie eine Datei haben
/Content/bootstrap.css
und Sie leiten in Ihrer Bundle.config weiter
.Include ("~ / Content / Bootstrap.css")
Das CSS wird nicht geladen.
Ein bisschen spät zur Party. Aber es scheint, als hätte niemand die
Bündelung und Minimierung von erwähnt StyleBundle
.
@Styles.Render("~/Content/css")
ruft an Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
was wiederum ruft
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
effektiv kombiniert & minimiert bootstrap.css
& Site.css
in einer einzigen Datei,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Aber ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
nur wenn debug
auf false
in gesetzt ist Web.config
.
Ansonsten bootstrap.css
& Site.css
wird individuell serviert.
Nicht gebündelt oder minimiert:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Wie in App_start.BundleConfig definiert, wird nur aufgerufen
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Es passiert nichts, auch wenn Sie diesen Abschnitt entfernen.
Polo Ich würde Bundles in MVC aus mehreren Gründen nicht verwenden. In Ihrem Fall funktioniert dies nicht, da Sie eine benutzerdefinierte BundleConfig-Klasse in Ihrem Ordner Apps_Start einrichten müssen. Dies macht keinen Sinn, wenn Sie einfach einen Stil in den Kopf Ihres HTML-Codes einfügen können:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Sie können diese auch zu einer Layout.cshtml- oder Teilklasse hinzufügen, die aus all Ihren Ansichten aufgerufen und auf jeder Seite abgelegt wird. Wenn sich Ihre Stile ändern, können Sie den Namen und den Pfad leicht ändern, ohne sie neu kompilieren zu müssen.
Das Hinzufügen von fest codierten Links zu CSS in einer Klasse unterbricht den gesamten Zweck, die Benutzeroberfläche und das Design vom Anwendungsmodell zu trennen. Sie möchten auch keine fest codierten Stylesheet-Pfade, die in c # verwaltet werden, da Sie keine "Skins" oder separaten Stilmodelle mehr erstellen können, z. B. für verschiedene Geräte, Themen usw. wie folgt:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Mit diesem System und Razor können Sie jetzt den Skin-Pfad aus einer Datenbank- oder Benutzereinstellung heraus wechseln und das gesamte Design Ihrer Website ändern, indem Sie den Pfad einfach dynamisch ändern.
Der gesamte Zweck von CSS vor 15 Jahren bestand darin, sowohl benutzergesteuerte als auch anwendungsgesteuerte Stylesheet- "Skins" für Websites zu entwickeln, damit Sie das Erscheinungsbild der Benutzeroberfläche getrennt von der Anwendung ändern und den Inhalt unabhängig von der Datenstruktur neu verwenden können. .... zum Beispiel eine druckbare Version, eine mobile Version, eine Audioversion, eine rohe XML-Datei usw.
Indem wir jetzt zu diesem "altmodischen", fest codierten Pfadsystem zurückkehren, das C # -Klassen, starre Stile wie Bootstrap verwendet und die Themen von Websites mit Anwendungscode zusammenführt, sind wir wieder rückwärts zu der Art und Weise gegangen, wie Websites 1998 erstellt wurden.
minification
? : s / :(
Ich habe alles Notwendige getan, um einem MVC 3-Web eine Bündelung hinzuzufügen (ich bin neu in der vorhandenen Lösung). Styles.Render
hat bei mir nicht funktioniert. Endlich stellte ich fest, dass mir einfach ein Doppelpunkt fehlte. Auf einer Masterseite: <%: Styles.Render("~/Content/Css") %>
Ich bin immer noch verwirrt darüber, warum (auf derselben Seite) ohne Doppelpunkt <% Html.RenderPartial("LogOnUserControl"); %>
funktioniert .