Wir haben eine ziemlich komplexe Anwendung, die zuvor WebForms verwendet. Wir sind dabei, Bits davon mit MVC von Grund auf neu zu schreiben. Unsere Anwendung besteht aus einer Reihe von Widgets, die zusammen die Funktionalität der Anwendung ausmachen.ASP.NET MVC Aggregate CSS/JS von mehreren Controllern
In WebForms haben wir UserControls verwendet. Jedes UserControl würde sein CSS und JavaScript mittels einer Sammlung registrieren, die in HttpContext.Current.Items gespeichert wurde. Diese Sammlung würde dann zusammengeführt, um sie als eine einzige Anfrage auszugeben. Normalerweise würde dies im Page_Load-Ereignis auftreten, und die umschließende Seite würde dann ein Skript-Tag rendern, das das gesamte für diese Seite erforderliche JavaScript und CSS umfassen würde.
Wir hatten Probleme mit MVC. Wir verwenden eine Anzahl von Ansichten innerhalb einer Masterpage, um die Widgets nachzuahmen. Jedes Widget hat seinen eigenen Controller, so dass die Funktionalität ausreichend getrennt werden kann. Die Masterpage baut die Widgets auf der Seite mit RenderAction aus MVC-Futures auf. Ursprünglich verwendeten wir dieselbe Registrierungsmethode für die CSS/JS-Dateien. Jeder Controller würde seine erforderlichen Dateien in einer Aktion registrieren. Die Dateien wären dann in der HttpContext.Current.Items-Auflistung enthalten und würden auf der Seite gerendert. Um dies zu erleichtern, habe ich eine HtmlHelper-Erweiterung geschrieben, um die Links/Skripts auf der Seite darzustellen. Es sieht wie folgt aus:
<%= Html.GetRegisteredCssFiles() %>
Das Problem ist, dass MVC eine Top-down-Ansatz verwendet. Dieser Aufruf erfolgt im Tag der Seite, aber unsere nachfolgenden Aufrufe von RenderAction passieren weiter unten. Wenn RenderAction aufgerufen wird und die erforderlichen Dateien in HttpContext.Current.Items registriert sind, wurde der obige Code bereits ausgeführt. Daher wird die Sammlung nicht zur richtigen Zeit geändert.
Hat jemand irgendwelche Ideen, wie wir das konstruieren sollten? Ich suche nach Antworten, die Best Practices für MVC enthalten.
endlich, gibt es irgendwelche CSS/Js Aggregator für DNN? Was ist in Drupal (PHP)? –