我试图在我的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相关问答推荐

如何在没有 Select 按钮的情况下在 GridView 中实现全行 Select ?

ASP.NET - 在屏幕底部显示应用程序构建日期/信息

将 Global.asax 迁移到 Startup.cs

捕获对 ASP.NET ASMX Web 服务的 SOAP 请求

下载功能在 asp.net 的更新面板中不起作用

使用 Lucene.NET 索引 .PDF、.XLS、.DOC、.PPT

System.Web.HttpContext 无法识别

如何通过后面的代码不显示

如何配置 ASP.NET Core 1.0 以使用本地 IIS 而不是 IIS Express?

如何将 ASP.NET MVC5 身份验证添加到现有数据库

在 ASP.NET 中将虚拟路径转换为实际 Web 路径

您如何以编程方式填写表格并发布网页?

为 ASP.NET Core MVC 显示 404 Not Found 页面

如何使用 WebRequest 发布数据并从网页获取响应

用于呈现

ASP.NET 身份,需要强密码

使用 .NET 连接到 AS400

在c#中显示带有换行符的标签文本

解耦 ASP.NET MVC 5 标识以允许实现分层应用程序

Application_End global.asax