2013-04-26 15 views
6

Basit bir tabloya sahip bir index.cshtml dosyası var. Datatable eklentisi için css dosyasını ve min js dosyasını indirdim. Ben BundleConfig.cs aşağıdaki kodu yerleştirin:jQuery DataTable ASP.NET MVC'de çalışmayacak mı?

@Styles.Render("~/Content/css") 
@Scripts.Render("~/bundles/modernizr") 
@Scripts.Render("~/bundles/table") 

Son olarak, benim index.cshtml içinde, masama üstünde aşağıdaki kodu koyun: Benim _Layout.cshtml yılında

bundles.Add(new ScriptBundle("~/bundles/table").Include(
         "~/Scripts/jquery.dataTables.min.js")); 

bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
         "~/Content/themes/base/jquery.ui.core.css", 
         "~/Content/themes/base/jquery.ui.resizable.css", 
         "~/Content/themes/base/jquery.ui.selectable.css", 
         "~/Content/themes/base/jquery.ui.accordion.css", 
         "~/Content/themes/base/jquery.ui.autocomplete.css", 
         "~/Content/themes/base/jquery.ui.button.css", 
         "~/Content/themes/base/jquery.ui.dialog.css", 
         "~/Content/themes/base/jquery.ui.slider.css", 
         "~/Content/themes/base/jquery.ui.tabs.css", 
         "~/Content/themes/base/jquery.ui.datepicker.css", 
         "~/Content/themes/base/jquery.ui.progressbar.css", 
         "~/Content/themes/base/jquery.ui.theme.css", 
         "~/Content/themes/base/jquery.dataTables.css")); 
     } 

, bu var :

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#patients').dataTable(); 
    }); 
    </script> 
ben tabloyla sayfayı çalıştırın ve kaynağı görüntülediğinizde, ben alt ve üst kısmında senaryom de jquery dosyasına bakın, bu yüzden hata alıyorum fark

:

Uncaught ReferenceError: $ is not defined

BundleConfig yeni js ve css dosyaları eklemek için doğru yer mi? Orada olmasını istemiyorsam nasıl yaparım? Jquery komut dosyası neden sayfanın alt kısmında çalıştırılır?

@Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/modernizr") 
    @Scripts.Render("~/bundles/table") 

ama şimdi bu hata olsun:

yakalanmamış TypeError: Nesne [nesne nesne] herhangi bir yöntem bulunur dataTable '

I _Layout.cshtml aşağıdaki ilave Kaynağı görüyorum, dataTables.min.js'nin orada olmadığını görüyorum, ancak paketlere/tabloya ekledim.

+1

sayfanızda jQuery ekleyebilirim? –

+0

_Layout.cshtml adresimde çağrılan modernizörün içerdiğini düşündüm. – Xaisoft

+0

Onu _layout.cshtml dosyasına ekledim, ancak şimdi başka bir hata alıyorum. – Xaisoft

cevap

7

önce ayıklama web.config = "True", minimize javascript dosyaları paketler dahil edilmez sen varsa. Bunu BundleConfig dosyanıza ekleyin.cs (veya olmayan minified javascript dosyası kullanmak veya olmayan hata ayıklama modunda çalıştırın):

#if DEBUG 
      //by default all minimized files are ignored in DEBUG mode. This will stop that. 
      bundles.IgnoreList.Clear(); 
#endif 

Ek bilgi: Bundler not including .min files

+0

Bu buydu. Beni tamamen atıyordu. Teşekkürler. – Xaisoft

+0

10 ay sonra: teşekkürler! Sonunda bu baş ağrısı gitti. – statue

1

Modernizer, bir asp.net MVC projesiyle birlikte, jQuery ile hiçbir ilgisi yoktur.

Paketlerinizi, jQuery ve jQuery eklentileri için bir tane veya her ikisini de yapan bir tane için güncelleştirirsiniz. Örneğin. Herhangi bir ek jQuery eklentileri eklerseniz

bundles.Add(new ScriptBundle("~/bundles/jQuery").Include(
         "~/Scripts/jquery-{version}.min.js")); 
bundles.Add(new ScriptBundle("~/bundles/jQueryPlugins").Include(
         "~/Scripts/jquery.dataTables.min.js")); 

, o zaman sadece jQueryPlugins paket ile kayıt.

Daha sonra _Layout'unuzda jQuery bundle'ı ilk olarak oluşturduğunuzdan emin olun.

@Scripts.Render("~/bundles/jQuery") 
@Scripts.Render("~/bundles/jQueryPlugins") 

Bu şekilde, eklentilerden önce jQuery uygulamasının her zaman dahil olduğunu bilirsiniz.

Not

Ayrıca size komut sayfanızda olduğunu jQuery kodundan önce işlenen olduğundan emin olun. Örneğin.

@Scripts.Render("...") 

Varsayılan olarak

$(document).ready(function(){ .... } 
+0

Tim, jQuery zaten oradaydı. DataTable'ı ~/bundles/tables olarak ekledim ve _Layout.cshtml dosyasına ekledim, ancak dataTable bir yöntem olmadığını söylüyor – Xaisoft

+0

Tim, @ Scripts.Render ("~/bundles/table") üstüne koydum. sayfam ancak kaynak görüntülerken dataTables eklenti komut dosyasını göremiyorum. Ayrıca, Layout.cshtml ile zaten oluşturulmuşsa, neden onu Index.cshtml sayfamda da eklemeliyim? – Xaisoft

+0

Hayır, Index.cshtml'nizde buna ihtiyacınız yok. Sadece Index.cshtml dosyanızdaki kodun _Layout sayfasındaki komut dosyalarını oluşturduktan sonra olduğundan emin olun. –