9

mvc4 では、バンドルを使用してすべてのスクリプトと css ファイルを 1 回呼び出します。私の知る限り、js ファイルと cs ファイルの順序は、それらを呼び出すときに重要です。バンドルを使用する場合、css ファイルと js ファイルがバンドル内で正しい順序になっているかどうかを知るにはどうすればよいですか? 注文をカスタマイズできますか?

現在、datepicker に問題があります。css ファイル/テーマが正しく読み込まれていないようです。バンドルが css/js ファイルをどのように並べているかを確認したいと思います... ありがとう :)

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/base/css")" rel="stylesheet" type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
4

2 に答える 2

5

このスレッドに示されているように、独自のバンドルを作成することで、「css」ファイルと「js」ファイルの順序を制御できます。

1つの重要なことは、交換する必要があるということです

BundleTable.Bundles.RegisterTemplateBundles();

BundleTable.Bundles.EnableDefaultBundles();

Global.asax.cs で

于 2012-06-01T04:23:01.983 に答える
5

その質問に対する遅い回答ですが、ASP.NET MVC はファイルをアルファベット順に並べ替えます。また、IBundleOrdererインターフェイスを使用して、スクリプト ファイルを手動で注文することもできます。

たとえば、次のようなカスタム IBundleOrderer 実装を使用します。

Bundle myBundle = new Bundle("~/bundles/SiteScripts", new JsMinify());
myBundle.IncludeDirectory("~/Scripts/SiteScripts", "*.js");
myBundle.Orderer = new MyBundleOrderer();
bundles.Add(myBundle);

MyBundleOrderer は、web.config ファイルから優先度の高いスクリプトを取得します。

public class MyBundleOrderer : IBundleOrderer
{
    public IEnumerable<System.IO.FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
    {
        if (ConfigurationManager.AppSettings["HighPriorityScripts"] != null)
        {
            string[] highPriorityScripts = ConfigurationManager.AppSettings["HighPriorityScripts"].Split(',');
            List<FileInfo> listFiles = new List<FileInfo>(files);
            List<FileInfo> orderedFiles = new List<FileInfo>();

            // Add high priority files in order : 
            foreach (string highPriorityFile in highPriorityScripts)
            {
                FileInfo nextFileInfo = listFiles.Find(delegate(FileInfo arg) 
                                {
                                    return arg.Name == highPriorityFile;
                                }
                              );
                if (nextFileInfo != null)
                {
                    orderedFiles.Add(nextFileInfo);
                }
            }

            // Add remaining files to bundle : 
            foreach (FileInfo lowPriorityFile in listFiles)
            {
                if (!orderedFiles.Contains(lowPriorityFile))
                {
                    orderedFiles.Add(lowPriorityFile);
                }
            }

            return orderedFiles;
        }
        return files;
    }
}
于 2012-12-25T08:35:15.920 に答える