it-swarm.com.de

Styles.Render in MVC4

Wie funktioniert .NET MVC4 in einem @Styles.Render-Projekt?

Ich meine, in @Styles.Render("~/Content/css") welche Datei ruft es auf?

Ich habe keine Datei oder einen Ordner namens "css" in meinem Content-Ordner.

368
Ricardo Polo

Es ruft die in diesem Paket enthaltenen Dateien auf, die in der Klasse BundleConfig im Ordner App_Start deklariert sind.

In diesem Fall ruft der Aufruf von @Styles.Render("~/Content/css") "~/Content/site.css" auf.

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
442
NunoCarmo

Achten Sie auf Groß- und Kleinschreibung. Wenn sie eine datei haben 

/Content/bootstrap.css

und leiten Sie in Ihrer Bundle.config um 

.Include ("~/Content/Bootstrap.css")

die CSS wird nicht geladen.

33
linktoemi

Ein bisschen zu spät zur Party. Aber es scheint, als hätte niemand erwähnt
Bündelung & Minification von StyleBundle, so .. 

@Styles.Render("~/Content/css") 

aufrufe in 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() kombiniert effektiv & minimifiziertbootstrap.css & Site.css
in eine einzige Datei, 

<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">

Aber..

<system.web>
  <compilation debug="false" targetFramework="4.6.1" />
</system.web>

Nur wenndebug in Web.config auf false gesetzt ist.
Andernfalls werden bootstrap.css & Site.css einzeln geliefert.
Weder gebündelt noch vermindert:

<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
8
SAm

src="@url.content("~/Folderpath/*.css")" sollte Stile rendern

0
Ram

Wie in App_start.BundleConfig definiert, wird nur aufgerufen 

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

Nichts passiert, auch wenn Sie diesen Abschnitt entfernen.

0
Sathish Dadi

Ich habe alle notwendigen Schritte unternommen, um eine MVC 3-Website mit Bundling zu versehen (ich bin neu in der vorhandenen Lösung). Styles.Render hat bei mir nicht funktioniert. Ich entdeckte schließlich, dass mir einfach ein Doppelpunkt fehlte. In einer Masterseite: <%: Styles.Render("~/Content/Css") %> bin ich immer noch verwirrt, warum (auf derselben Seite) <% Html.RenderPartial("LogOnUserControl"); %> ohne den Doppelpunkt arbeitet.

0
dudeNumber4

Polo Ich würde aus mehreren Gründen keine Bundles in MVC verwenden. In Ihrem Fall funktioniert es nicht, da Sie in Ihrem Apps_Start-Ordner eine benutzerdefinierte BundleConfig-Klasse einrichten müssen. Dies macht keinen Sinn, wenn Sie einfach einen Stil in den Kopf Ihrer HTML-Datei 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 allen Ansichten aufgerufen wird und auf jeder Seite abgelegt wird. Wenn sich Ihre Stile ändern, können Sie den Namen und den Pfad problemlos ändern, ohne neu kompilieren zu müssen.

Das Hinzufügen von hartcodierten Links zu CSS in einer Klasse unterbricht den gesamten Zweck der Trennung der Benutzeroberfläche und des Designs vom Anwendungsmodell. Sie möchten auch keine hart codierten Stylesheet-Pfade, die in c # verwaltet werden, da Sie keine "Skins" oder separate Style-Modelle mehr für verschiedene Geräte, Designs usw. erstellen können.

<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 von einer Datenbank- oder Benutzereinstellung ausschalten und das gesamte Design Ihrer Website ändern, indem Sie einfach den Pfad dynamisch ändern.

Der Zweck von CSS vor 15 Jahren bestand darin, sowohl benutzer- als auch anwendungsgesteuerte Stylesheets für Websites zu entwickeln, damit Sie das Aussehen und Verhalten der Benutzeroberfläche von der Anwendung abschalten und den Inhalt unabhängig von der Datenstruktur wiederverwenden können. .... zum Beispiel eine druckbare Version, eine mobile Version, eine Audio-Version, eine unformatierte XML-Datei usw.

Indem wir jetzt zu diesem "altmodischen", hartcodierten Pfadsystem zurückkehren, das C # -Klassen verwendet, starre Stile wie Bootstrap verwendet und die Themes von Websites mit Anwendungscode zusammenführt, sind wir wieder zurückgekehrt, wie Websites 1998 erstellt wurden.

0
Stokely