2015-10-30 18 views
5

Paketleme, VS'nin düzgün bir özelliği olsa da, bazen belirli bir sayfanın kullanılabilir olması için bir komut dosyası veya css olmasını istiyorum. Bu şekilde, ad çakışmaları ve/veya geçersiz kılmalardan kaçınılmasını sağlayabiliyorum.Sayfa başına komut dosyalarını ve stilleri gruplamak mümkün mü

Dosyaları, yalnızca genel ve sayfaya özgü dosyaların kullanılabilir olmasını sağlamak mümkün mü? Örneğin, Cabinet.cshtml adında bir sayfam var diyelim. Ve ayrıca Cabinet.js ve Cabinet.css dosyalarına sahibim. Öte yandan, admin.js ve admin.css dosyalarıyla AdminPanle.cshtml adlı başka bir sayfam var.

Şimdi, bu iki görünümün yalnızca ilgili dosyalarına ve ayrıca jQuery ve jQuery ui'ye erişmesini istiyorum. Yani jQuery global olmalı.

+1

Hep kendi paketlerini oluşturabilirsiniz - 'Yeni ScriptBundle (" ~ "bundle", "jquery-ui" ve "cabinet" dahil olmak üzere/bundles/cabinet ")' vb. görünümünüzde '@ Scripts.Render (" ~/bundles/cabinet ")' ı içerir. Veya sadece "dolap" ile paketi oluşturun ve düzeninizdeki ana paketi ve sayfanızdaki özel paketi –

+0

Oh, bu harika. @ Scripts.Render ("~/bundle/cabinet") 'un sadece Cabinet.cshtml dosyasında bulunması sorunu çözecektir. Teşekkürler Stephen. –

cevap

12

Sorun nedir? Varsayılan olarak senin BundleConfig.cs sahip:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryui") 

Ve oluşturmak 4 diğer paketler:

//scripts 
bundles.Add(new ScriptBundle("~/bundles/cabinet").Include(
        "~/Scripts/Cabinet.js")); 
bundles.Add(new ScriptBundle("~/bundles/admin").Include(
        "~/Scripts/admin.js")); 
//styles 
bundles.Add(new StyleBundle("~/Content/cabinet").Include("~/Content/Cabinet.css")); 
bundles.Add(new StyleBundle("~/Content/admin").Include("~/Content/admin.css")); 

Şimdi ayırabilirsiniz

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

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
        "~/Scripts/jquery-ui-{version}.js")); 

Yani _Layout.cshtml kafanın içinde bu paketleri koymak Komut dosyaları ve stilleri ve bunları sadece ihtiyacınız olan sayfada ekleyin.

Ayrıca, head etiketinde _Layout.cshtml sayfanızda 2 bölüm tanımlamanın iyi olduğunu düşünüyorum. Onlar böyle varsayalım nerede senin kütüphanelerini yerleştirebilirsiniz

<head> 
    //other scripts and styles here 
    @RenderSection("scriptslib", required: false) 
    @RenderSection("csslib", required: false) 
</head> 
Görüntülemeler şimdi Yani

(Cabinet.cshtml ve AdminPanle.cshtml):

@section scriptslib{ 
    @Scripts.Render("~/bundles/cabinet") 
    } 
+0

Eksik olduğum şey, bunları belirli sayfalarda ayrı olarak gösterebileceğimi unuttum. –

+0

Ayrıca RenderSection hakkında tamamen unutmuşum! lol – zerohero