Une vue partielle que j'utilise nécessite l'inclusion de certaines bibliothèques jQuery, et j'essaie actuellement de trouver le meilleur moyen de les ajouter.ASP.NET MVC 3 Vue partielle du rasoir - jQuery Inclus dans la disposition principale
Ma configuration actuelle est la suivante:
_Layout.cshtml:
...
@if (ViewBag.jQuery)
{
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"
type="text/javascript"></script>
}
...
Index.cshtml:
...
@{ Html.RenderPartial("PartialView",
new MVCModel.Models.MyModel(),
new ViewDataDictionary { { "ViewBag", ViewBag } }); }
...
PartialView.cshtml:
...
@{
if (ViewBag.ViewBag != null)
{
var vb = (dynamic)ViewBag.ViewBag;
vb.jQuery = true;
}
}
...
Alors, que J'essaie de faire est "tu rn sur "la bibliothèque dans la vue partielle, et que ce booléen se propage jusqu'à la disposition principale. Cela fait en sorte que je puisse activer la librairie autant que je veux quand je veux (beaucoup de vues partielles, ou une vue utilisée plusieurs fois), mais elle ne sera incluse qu'une seule fois. En plus de cela, j'ai le contrôle sur l'ordre des inclusions, donc je peux m'assurer que les dépendances de fichiers sont incluses en premier.
Je me demandais simplement s'il y avait une meilleure façon de le faire.
En ce moment, mes deux plus grands problèmes sont les suivants:
- Le ViewBag n'est pas fortement typé, donc IntelliSense ne me dira pas que les bibliothèques sont disponibles pour moi.
- En passant le ViewBag à la vue partielle, juste pour pouvoir le réutiliser.
Référencer toutes les bibliothèques sur chaque page n'est pas une bonne idée si les bibliothèques ne sont nécessaires que sur quelques pages. Cela gaspille inutilement de la bande passante et complique la page. –
Je ne suis pas d'accord. Je pense qu'il ne gaspille pas de bande passante pour compresser TOUTES vos références et que le navigateur client le télécharge une seule fois (une seule requête au lieu d'une par bibliothèque) et s'appuie sur le cache du navigateur. Et je ne vois pas comment cela complique la page ... le charger différemment sur chaque page complique la maintenance ... – tsimbalar
Cela dépend du nombre de fichiers que vous téléchargez et si vous avez vraiment besoin de tous ces fichiers sur chaque page. Il y a plusieurs fois que j'ai plus de 20 fichiers Javsascript qui sont utilisés sur des pages différentes. Il n'y a absolument aucune raison d'avoir tous ces éléments sur chaque page - en particulier si un utilisateur est peu susceptible de visiter des pages qui nécessitent certains des fichiers. De plus, lorsque vous faites beaucoup de jQuery, vous courez le risque de collisions et d'autres problèmes. Et ... il n'y a rien qui empêche la minification de tous vos fichiers. De plus, plusieurs fichiers minifiés peuvent être chargés simultanément. –