Nous avons une application assez complexe qui utilisait auparavant WebForms. Nous sommes en train de réécrire des morceaux à partir de rien en utilisant MVC. Notre application est composée d'un certain nombre de widgets qui, ensemble, constituent la fonctionnalité de l'application.ASP.NET MVC Agrégation CSS/JS à partir de plusieurs contrôleurs
Dans WebForms, nous avons utilisé UserControls. Chaque UserControl enregistrerait ses CSS et JavaScript au moyen d'une collection qui a été stockée dans HttpContext.Current.Items. Cette collection serait ensuite fusionnée en une seule requête. Généralement cela se produirait dans l'événement Page_Load, et la page contenant rendrait alors une balise de script qui comprendrait tout le JavaScript et le CSS nécessaires pour cette page.
Nous avons eu du mal à faire la même chose dans MVC. Nous utilisons un certain nombre de vues dans une masterpage pour imiter les widgets. Chaque widget possède son propre contrôleur, de sorte que la fonctionnalité peut être suffisamment séparée. La page maître construit les widgets sur la page en utilisant RenderAction à partir de contrats à terme MVC. À l'origine, nous utilisions la même méthode d'enregistrement pour les fichiers CSS/JS. Chaque contrôleur enregistrerait ses fichiers requis dans une action. Les fichiers seraient alors contenus dans la collection HttpContext.Current.Items et seraient rendus à la page. Pour faciliter cela, j'ai écrit une extension HtmlHelper pour rendre les liens/scripts sur la page. Cela ressemble à ceci:
<%= Html.GetRegisteredCssFiles() %>
Le problème est que MVC utilise une approche plus descendante. Cet appel est fait dans l'étiquette de la page, mais nos appels ultérieurs à RenderAction se produisent ci-dessous. Au moment où RenderAction est appelée et les fichiers requis sont enregistrés dans HttpContext.Current.Items, le code ci-dessus a déjà été exécuté. Ainsi, la collection n'est pas modifiée au bon moment.
Est-ce que quelqu'un a des idées sur la façon dont nous devrions construire cela? Je cherche des réponses qui intègrent les meilleures pratiques pour MVC.
enfin, y a-t-il un agrégateur css/js pour dnn? comme quoi est en drupal (PHP)? –