J'essaie actuellement de trouver un bon moyen de charger mes fichiers javascript uniquement lorsque j'en ai besoin. Pour ce faire, j'ai créé plusieurs HtmlHelpers pour faceboxlinks, datepickerfields, tinymcefields et d'autres scripts qui ont besoin d'un js externe et d'une expression jquery d'initialisation. Dans ces aides, j'exécute le script en utilisant getScript()
de jQuery et utilise sa fonction de rappel pour initer le script.Suivi des scripts chargés par page à l'aide de ViewData
Maintenant, mon problème vient. Ma première idée était de garder une trace de ces scripts dans une liste de chaînes et de mettre cela dans htmlHelper.ViewData. Mais, malheureusement, cela échoue. Pour une raison quelconque, ce viewdata n'est pas transmis à des vues partielles ou quelque chose de similaire; il ne conserve pas la liste ..
Existe-t-il un autre endroit où je peux globalement conserver ma liste de chaînes au lieu du ViewDataDictionary de l'assistant, ou est-ce que j'utilise cette ViewData de manière incorrecte et dois-je la transmettre pour certaines raisons? Toute clarification ou aide serait très appréciée!
Merci! L'utilisation de HttpContext.Current.Items a fait l'affaire. Pour l'instant, cela résout mon problème. Quels pourraient être les inconvénients de s'appuyer sur des variables globales dans ce genre de situations? Je ne suis pas très enthousiaste à l'idée de devoir définir et initialiser mes scripts dans toutes les vues que j'utilise. – Leon
Lorsque vous utilisez une variable globale, vous ignorez les contraintes architecturales, donc il est théoriquement plus difficile de supporter un tel code. Vous n'avez pas besoin d'initialiser tous vos scripts à la fois, vous pouvez le faire à la demande comme vous le faites maintenant, mais ajoutez le code d'initialisation à l'espace réservé approprié dans le conteneur, qui est ensuite ajouté à la page maître. De cette façon, votre page maître n'a rien à "savoir" sur les vues. –
Je vois, merci d'avoir éclairci ça :) – Leon