您好我目前正在使用带有 System.Web.Optimization 的 asp.net MVC 4 rc。由于我的网站需要根据用户偏好进行本地化,因此我正在使用 jquery.globalize 插件。
我非常想继承 ScriptBundle 类并根据System.Threading.Thread.CurrentThread.CurrentUICulture
. 看起来像这样:
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 })
));
例如,如果 ui 文化是“en-GB”,我希望拾取以下文件(当然缩小,如果可能的话也缓存,直到脚本文件或 currentui 文化改变)。
- “~/Scripts/jquery.globalize/globalize.js”
- "~/Scripts/jquery.globalize/globalize-en-GB.js" <-- 如果此文件在服务器文件系统上不存在,则回退到 globalize-en.js。
我尝试使用以下内容重载 Include 方法,但这不起作用,因为它不是根据请求进行评估,而是在应用程序启动时进行评估。
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;
}
}
谢谢
康斯坦丁诺斯