Wie wird eine CSS-Datei von einer ASP.NET MVC-Teilansicht (serverseitig) injiziert?

9

Ich habe eine Teilansicht (.ascx), die eine eigene CSS-Datei enthalten sollte, wie sie in mehreren anderen Ansichten verwendet wird. Wie injiziere ich ein Stylesheet auf der Seite des Servers, d. H. Ohne JavaScript?

    
Dario Solera 06.10.2010, 10:26
quelle

5 Antworten

2

Dario - Aufgrund der Tatsache, dass Sie dies für Partialviews verwenden, haben Sie immer das Problem, dass der <head> -Abschnitt des Dokuments bereits vorhanden ist und daher nicht geändert werden kann. Wenn Sie WC3-konform bleiben wollen, müssen Sie weitere CSS in den Kopfbereich über Javascript setzen. Dies kann oder auch nicht wünschenswert sein (wenn Sie Downstream-Browser mit deaktiviertem Javascript bedienen müssen).

Das Hauptproblem, auf das Sie sich beziehen können, ist die Tatsache, dass Sie <asp:contentplaceholders> nicht in Ihre Partials einfügen können. Dies ist ein Schmerz (obwohl der Masterpage ref das Teil zu nahe an eine bestimmte Masterseite bindet).

Zu diesem Zweck habe ich eine kleine Hilfsmethode erstellt, die die grundlegende Arbeit erledigt, um die CSS-Datei automatisch in den Kopfbereich zu legen.

edit - (laut Omus Vorschlag) ist dies ein nettes kleines Mittelweg-Haus:

%Vor%

Verwendung:

%Vor%

oder:

%Vor%

ist einen Back-Pocket-Ansatz wert, wenn alles andere fehlschlägt. Es kann auch möglich sein, die obige Logik anzupassen, um ein Aktionsfilter zu treffen und das css zu den Antwortkopfzeilen usw. hinzuzufügen, anstatt die js-Zeichenkette auszugeben.

    
jim tollan 06.10.2010 11:34
quelle
1

Gibt es einen Grund, warum Sie das Stylesheet nicht einfach in die Hauptseite einfügen können? Wenn es nicht extrem groß ist, sollte es Ihre Seite nicht wesentlich langsamer laden, wenn sie nicht verwendet wird, insbesondere nach der Komprimierung.

Außerdem wird, wenn die Teilansicht von Ajax abgerufen wird, die CSS-Datei erneut heruntergeladen (abhängig vom Cache des Browsers).

    
KallDrexx 06.10.2010 13:12
quelle
1

Ich bin kein ASP.NET- oder MVC-Experte, aber ich arbeite gerade an einem Projekt damit. Wäre es möglich, so etwas in den Kopf Ihrer Masterseite einzufügen?

%Vor%

Dann bringen Sie Ihr CSS irgendwie in den Inhalts-Platzhalter?

%Vor%

Es sieht so aus, als ob Sie dies von der aufrufenden Seite aus tun müssten, wodurch Doppelcode eingeführt würde. Ich bin mir nicht sicher, wie ich das schaffen soll. Vielleicht könnte es mit einem HTML-Helfer gemacht werden.

    
ItsJason 06.10.2010 15:20
quelle
0

Ein Ort, an dem ich gearbeitet habe, hatte eine Seite mit vielen bedingten Teilansichten, die sich von Zeit zu Zeit ändern könnten und würden, wenn der Anwendung neue Dinge hinzugefügt würden. Der beste Weg, den wir gefunden haben, war die Verwendung von Namenskonventionen - Benennung der Teilansicht, des Stylesheets und des Skripts (außer der Erweiterung natürlich).

Wir haben dem Ansichtsmodell der Seite ein oder mehrere Stylesheets, Skripte und Teilansichten hinzugefügt. Anschließend haben wir einen benutzerdefinierten HTML-Helper verwendet, um das relevante Array in jedem Inhaltsabschnitt zu durchlaufen und den erforderlichen Inhalt einzufügen. Der Schmerz musste für jede Komponente drei oder mehr Dateien verwalten, aber zumindest konnten wir den Wartungsaufwand auf den Hosting-Seiten reduzieren.

Das Problem des Einfügens einer Teilansicht in eine Teilansicht wurde jedoch noch nie gelöst.

    
Tim Rourke 04.01.2011 16:21
quelle
0

Warum nicht das Link-Tag in Ihre Teilansicht einfügen:

%Vor%     
ajay_whiz 06.10.2010 10:50
quelle

Tags und Links