Вопрос по asp.net-mvc, asp.net-mvc-4 – mvc4 bundle, как это работает?

9

в mvc4 они используют связки для вызова всех скриптов и файлов CSS один раз. насколько я знаю, порядок файлов 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>

Ваш Ответ

2   ответа
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;
    }
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededasp.net/mvc/tutorials/mvc-4/bundling-and-minification.
5

css & quot; и & quot; js & quot; файлы, создавая свои собственные пакеты, как показано на этомнить.

Одна важная вещь, которую вы должны заменить

BundleTable.Bundles.RegisterTemplateBundles();

с

BundleTable.Bundles.EnableDefaultBundles();

в Global.asax.cs

Похожие вопросы