2012-06-01 16 views
9

hepsi senaryo ve css dosyaları bir kez çağırmak için grupları kullanın. Onları çağırdığınızda olarak bildiğim kadarıyla, js ve cs dosyalarının sipariş önemlidir. demetleri kullanırsam, css ve js dosyalarının demet içinde doğru sırada olup olmadığını nasıl anlarım? ve siparişi özelleştirebilir miyim?mvc4 demeti, nasıl çalışıyor? mvc4 içinde

şimdi benim datepicker ile ilgili bir sorun yaşıyorum

, onun css dosyası/tema düzgün yüklenmiyor yüzden

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

http://stackoverflow.com/questions/9522407/:

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

MyBundleOrderer web.config dosyasından yüksek öncelikli komut alır asp-net-optimization-bundling – VJAI

cevap

5

yılında

BundleTable.Bundles.EnableDefaultBundles(); 

ile bu soruya Geç cevap

BundleTable.Bundles.RegisterTemplateBundles(); 

değiştirmek zorunda olduğunu, ancak ASP.NET MVC siparişleri dosyaları alfabetik olarak. Ayrıca komut dosyalarınızı elle sipariş etmek için IBundleOrderer arabirimini kullanabilirsiniz.

Örneğin, IBundleOrderer uygulaması böyle özel kullanın:

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; 
    } 
} 
+0

Ben yorumlamada yanlış olabilir, ancak diğer SO kullanıcıları için açıklık sağlamak için, MVC "IncludeDirectory" ile bir joker karakterle eklenirse dosyaları alfabetik olarak sipariş eder (veya "IncludesDirectory" seçeneğini kullanırsanız OP'nin sorusu başına). Belirli dosyaları açıkça listelerseniz, bunlar verilen sıraya eklenir. Kaynak "Joker karakterleri varsayılan olarak alfabetik sıraya göre yüklemek için komut dosyaları eklemek, genellikle istediğiniz gibi değil ... her dosyayı ekleyerek daha az hata eğilimli" - http://www.asp.net/mvc/tutorials/mvc- 4/demetleme-ve-küçültme. – pwdst

+0

@pwdst: Evet haklısınız, MVC dosyaları alfabetik olarak sıralar. Yani yorumunuz da bir seçenek. Dosyalarınızı yeniden adlandırmak istemediğiniz durumlar için örneğimi hazırlıyorum. – Canavar

5
:) ... desteler css/js dosyaları sipariş nasıl kontrol sayesinde istediğiniz gibi görünüyor

"css" ve "js" dosyalarının sırasını, bu thread numaralı belgede gösterildiği gibi kendi paketlerinizi oluşturarak denetleyebilirsiniz.

önemli bir nokta Global.asax.cs