gpt4 book ai didi

asp.net-mvc - 本地化的脚本包解决方案

转载 作者:行者123 更新时间:2023-12-04 02:10:22 26 4
gpt4 key购买 nike

嗨,我目前正在使用带有 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;
    }

    }

    谢谢

    康斯坦丁诺斯

    最佳答案

    没错,bundle 应该只在应用启动前配置。否则,在多服务器场景中,如果对 bundle 的请求被路由到不同的服务器而不是为页面提供服务的服务器,则不会找到对 bundle 资源的请求。

    那有意义吗?基本上所有的 bundle 都需要提前配置和定义,而不是在每个请求的基础上动态注册。

    关于asp.net-mvc - 本地化的脚本包解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978979/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com