ASP.NET MVC - バンドル構成の順序 質問する

ASP.NET MVC - バンドル構成の順序 質問する

ASP.NET MVC 5 アプリケーションで特定のロケール (es-CL) を使用しようとしています。次のものがあります:

  1. web.config の uiculture と culture を "es-CL" に変更しました
  2. インストールしたグローバル化そしてjQuery.Validation.Globalizeパッケージ
  3. ビューのデフォルト言語を変更しました:<html lang="es-cl">
  4. 新しいバンドルを作成し、適切なビューに含めました。

バンドル構成.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スクリプトがロードされる前にグローバル化それは私が望んでいることではありません。

なぜこのようなことが起こるのでしょうか? 単一のバンドル内のインクルード順序に依存することは可能ですか、それともこの単一のスクリプトを別のバンドルに入れてビューで指定する必要がありますか?

ベストアンサー1

デフォルトでは、ワイルドカードを含む名前のバンドル順序はアルファベット順です (コメントで指摘されているように)。ただし、依存関係ツリーに基づいて順序付けも行われ、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 の質問に対する回答を参照してください。一般的なスクリプト ライブラリのデフォルトの順序についてさらに詳しく説明しています。

バンドル内のファイルの順序 - 既知のライブラリは何ですか?

おすすめ記事