Ciao Attualmente sto usando l'asp.net MVC 4 rc con System.Web.Optimization. Poiché il mio sito deve essere localizzato in base alle preferenze dell'utente, sto lavorando con il plugin jquery.globalize.Una soluzione scriptbundle localizzata
Vorrei molto sottoclasse la classe ScriptBundle e determinare quali file raggruppare in base allo System.Threading.Thread.CurrentThread.CurrentUICulture
. Ciò sarebbe simile a questa:
bundles.Add(new LocalizedScriptBundle("~/bundles/jqueryglobal")
.Include("~/Scripts/jquery.globalize/globalize.js")
.Include("~/Scripts/jquery.globalize/cultures/globalize.culture.{0}.js",
() => new object[] { Thread.CurrentThread.CurrentUICulture })
));
Per esempio, se la lingua dell'interfaccia utente è "it-IT" Vorrei i seguenti file per essere prelevati (minified di corso e, se possibile, nella cache partecipavano fino a un file di script o il cambiamenti della cultura corrente).
- "~/Scripts/jquery.globalize/globalize.js"
- "~/Scripts/jquery.globalize/globalizzare-en-GB.js" < - se questo file non esiste sul sever file system in modo fallback su globalize-it.js.
Ho provato a sovraccaricare il metodo Include con qualcosa di simile al seguente, ma questo non funzionerà perché non viene valutato su richiesta ma all'avvio dell'applicazione.
public class LocalizedScriptBundle : ScriptBundle
{
public LocalizedScriptBundle(string virtualPath)
: base(virtualPath) {
}
public Bundle Include(string virtualPathMask, Func<object[]> getargs) {
string virtualPath = string.Format(virtualPathMask, getargs());
this.Include(virtualPath);
return this;
}
}
Grazie
Constantinos
Sì questo è vero, naturalmente. Ma a quanto pare, quando un file js o css cambia lato server, il bundle viene rivalutato per essere aggiornato (internamente magari usando FileSystemWatcher). Non vedo il motivo per cui non è possibile ignorare questo comportamento per tenere conto di altri eventi nel ciclo di vita dell'applicazione, come ad esempio la modifica della cultura dell'interfaccia utente. – cleftheris
Sì, le risposte di raggruppamento hanno l'impostazione delle dipendenze della cache per invalidare la voce della cache quando i file nel pacchetto cambiano. Abbiamo aperto il comportamento del caching per essere estensibile nella nostra lista delle cose da fare, ma non sono sicuro quando arriveremo a questo. –