ASP.NET MVC - Bundle Config ordre
Je suis en train d'utiliser un spécifique locale (es-CL) dans mon ASP.NET MVC 5 application. J'ai suivantes:
- Changé web.config uiculture et de la culture à "es-CL"
- Installé le Mondialiser et jQuery.La Validation.Mondialiser paquets
- Changé la langue par défaut de mon point de vue:
<html lang="es-cl">
- Créé un nouveau Bundle et incluse dans les vues.
Dans BundleConfig.cs:
bundles.Add(new ScriptBundle("~/bundles/jqueryval")
.Include("~/Scripts/jquery.validate.js")
.Include("~/Scripts/jquery.validate.unobtrusive.js"));
bundles.Add(new ScriptBundle("~/bundles/globalization")
.Include("~/Scripts/globalize/globalize.js")
.Include("~/Scripts/globalize/cultures/globalize.culture.es-CL.js")
.Include("~/Scripts/jquery.validate.globalize.js"));
Dans les points de vue:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/globalization")
}
Cependant, le code source généré est le suivant:
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/jquery.validate.globalize.js"></script>
<script src="/Scripts/globalize/globalize.js"></script>
<script src="/Scripts/globalize/cultures/globalize.culture.es-CL.js"></script>
Veuillez noter que le jquery.validate.globalize.js script est en cours de chargement avant globalize.js, ce qui n'est pas ce que je veux.
Pourquoi est-ce arrivé? Est-il possible de se reposer dans l'include de l'ordre dans un seul paquet, ou suis-je obligé de mettre ce script unique dans un autre bundle et le spécifier dans mon point de vue?
- Jetez un oeil à cette question stackoverflow.com/questions/11979718/...
- oui, mais je ne suis pas en utilisant la minifiés versions encore. Je suis l'aide de Microsoft.AspNet.Web.Optimisations de la version 1.1.0.
- Je pense que c'est comme Chris l'a mentionné dans son commentaire que les fichiers sont déplacés à l'ordre spécifié par le bundler... mais je ne peux pas être sûr, car je ne sais pas ce que ces fichiers sont, qui m'a conduit à demander. Je serai intéressé de savoir si l'aide de la IBundleOrderer travaille pour vous depuis la spécification de l'ordre n'ont pas.
- regarde @Softlion réponse dans [ce lien][1] [1]: stackoverflow.com/questions/11979718/...
@section Scripts { @Scripts.Render("~/bundles/jqueryval") }
semble avoir résolu le problème de mes scripts de chargement de l'ordre....
Vous devez vous connecter pour publier un commentaire.
Par défaut, le groupement de l'ordre est alphabétique des noms avec des caractères génériques (comme l'a fait remarquer dans les commentaires). Cependant, il a également des commandes sur la base de ce qu'il pense que votre dépendance à l'arbre, et
jQuery
scripts semblent fente vers le haut. Vous avez besoin pour créer un objet de mettre en œuvreIBundleOrder
:Cela empêche la valeur par défaut de la commande. Maintenant pour l'utiliser:
ref: http://stevescodingblog.co.uk/changing-the-ordering-for-single-bundles-in-asp-net-4/
Pour plus de lecture, une réponse à MikeSmithDev la question fournit un aperçu plus loin dans l'ordre par défaut pour populaire bibliothèques de scripts:
La commande de Fichiers au sein d'un bundle - Ce que sont connus les bibliothèques?
jquery.validate.globalize.js
est nécessaire pour les deux autres. De l'arbitre: "[Le bundler] va même jusqu'à mettre connu framework javascript d'abord les fichiers dans le bundle automatiquement, comme jQuery ou Prototype scripts, pour s'assurer qu'ils exécutent avant votre propre code qui utilise leurs types est exécuté"Implements IBundleOrderer
Public Function OrderFiles(context As BundleContext, files As IEnumerable(Of BundleFile)) As IEnumerable(Of BundleFile) Implements IBundleOrderer.OrderFiles
Return files
End Function
End Class
a fonctionné pour moiIBundleOrderer
est fait hors de propos. Heureusement avec VS 2015, nous pouvons utiliser absolument Gulp et Grunt pour ces sortes de choses. On peut même tirer parti de WebPack avec un peu plus de travail!Dans la dernière version de la MVC 5 (27 octobre 2014), vous devez utiliser cette classe à la place:
Et de créer le bundle comme les autres réponse:
À réduire les codes lors de la création de bundles, je vous suggère de créer une méthode d'extension.
Nécessiter une infrastructure classes: