我试图在我的ASP中使用特定的语言环境(es CL).NETMVC5应用程序.我有以下几点:

  1. 改变了网络.将uiculture和culture配置为"es CL"
  2. 安装了GlobalizejQuery.Validation.Globalize个软件包
  3. 更改了"我的视图"中的默认语言:<html lang="es-cl">
  4. 已创建新Bundle 包并包含在相应视图中.

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"));

在适当的视图中:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/bundles/globalization")
}

但是,生成的源代码如下所示:

<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>

请注意,jquery.validate.globalize.js脚本是在globalize.js之前加载的,这不是我想要的.

为什么会这样?是否可以在一个包中依赖include顺序,或者我是否被迫将这个脚本放在另一个包中,并在视图中指定它?

推荐答案

默认情况下,对于带有通配符的名称,绑定顺序是按字母顺序排列的(如注释中所指出的).但是,它也会根据它认为的依赖关系树进行排序,jQuery个脚本似乎会排在最前面.您需要创建一个实现IBundleOrder的对象:

class NonOrderingBundleOrderer : IBundleOrderer
{
    public IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
    {
        return files;
    }
}

这样可以防止默认排序.现在要使用它,请执行以下操作:

var bundle = new ScriptBundle("~/bundles/globalization")
    .Include("~/Scripts/globalize/globalize.js")
    .Include("~/Scripts/globalize/cultures/globalize.culture.es-CL.js")
    .Include("~/Scripts/jquery.validate.globalize.js");

bundle.Orderer = new NonOrderingBundleOrderer();

bundles.Add(bundle);

参考:http://stevescodingblog.co.uk/changing-the-ordering-for-single-bundles-in-asp-net-4/

为了进一步阅读,对MikeSmithDev问题的回答提供了对流行脚本库默认顺序的进一步了解:

Ordering of Files within a bundle - What are the known libraries?

Asp.net相关问答推荐

IIS HTTP 错误 500.19

如何从 dll 文件中提取类的源代码?

在 lambda 表达式中否定 Func

Web API Queryable - 如何应用 AutoMapper?

未知的网络方法.参数名称:methodName

为什么我在安装 IE8 后无法从 Visual Studio 2005 调试?

Web api 不支持 POST 方法

在 cookie 中存储多个值

ASP.NET Web 应用程序消息框

新的 ASP.NET MVC 5 应用程序如何知道如何创建数据库以及帐户控制器如何访问数据库?

IIS 7.5 上没有 asp.net 功能

通过 jQuery 调用 ASP.NET 服务器端方法

如何在 ASP.Net Core Razor 页面上重定向

ASP.NET 中的 <% %>(嵌入式代码块)

SimpleMembership 与 ASP.NET MVC 4 中的自定义数据库架构

在 ApiController 中添加自定义响应头

<%# Eval("State") %> 或 <%# DataBinder.Eval(Container.DataItem, "state")%>

如何在 ASP.net 中使用 wkhtmltopdf.exe

elmah:没有 HttpContext 的异常?

ASP.Net 哪个用户帐户在 IIS 7 上运行 Web 服务?