2015-04-29 11 views
5

Uygulamamızın belirli bir düzenleyici şablonu dışında jqueryui kullanmayacağı bir senaryo olduğumuzu varsayalım. Jqueryui'yi her sayfaya koymaktan kaçınmak istersem (yani, varsayılan olarak _Layout.cshtmlimde yüklenen paketlere dahil etmek istemiyorum), editör şablonunun jqueryui.js dosyasını nasıl içermesini sağlayabilirim? ve jqueryui.css dosyaları benim için bu dosyalara birden çok referansla sonuçlanmayacak bir şekilde, ve referansları başlığa veya satır içi yerine vücudumun sonuna koyar mı? İşte Bir editör şablonundan JavaScript veya css başvurusu nasıl eklenir

Ben çalışmak görünmüyordu editörüm şablonunda çalıştığım buydu:

@System.Web.Optimization.Scripts.Render("~/bundles/jqueryui") 
@System.Web.Optimization.Styles.Render("~/Content/jqueryuistyles") 

Bu komut ve bağlantı etiketleri eklendi, ama bu kez editörün kullanım başına etiketleri vermektedir Şablonu ve aynı zamanda onları satır içi doğru şekilde oluşturur, bu yüzden benim durumumda, jQuery'nin gövdenin altına yüklenmesinden önce. Benim _Layout.cshtml içinde paket dahil nasıl

@section Scripts{ <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryui")"></script> } 

Bu maçları, ancak bu görünüşte bir editör şablonundan çalışmaz. Hiçbir şey işlenmemişti, ve eğer yapmış olsa bile, JavaScript dosyasının birden fazla referansı ile sonuçlanacağını düşünüyorum (editör şablonunun çağrıldığı zaman başına 1)

Görünüşe göre bir yol olmalı. Bir editör şablonu, paketlere veya en azından Sections sistemine bağlanabilen bir JavaScript veya css dosyasının eklenmesini tetikler. Bunu nasıl yapacağını bilen var mı? may Bunu gerçekleştirmek için

@section JQueryUIOptional 
{ 
    <script type="text/javascript" src="@Url.Content("~/Scripts/path-To-Jquery-UI.js")"></script> 
    <link href="@Url.Content("~/Content/styles/path-to-JqueryUIstyles.css")" rel="stylesheet" type="text/css" /> 
} 
+1

Bu, asla editör şablonlarına veya kısmi parçalara asla komut eklememenizin nedeni tam da budur. Neden sadece komut dosyalarını, düzenden ziyade belirli bir görünüme eklemeyin. –

+0

[requirjs] 'a bakabilirsiniz (http://requirejs.org/). –

+0

@StephenMuecke Neden görünmüyor? Kesinlikle * yapabilirdim, ama ya daha sonra geri dönüp editör şablonumu jqueryui'den yeni bir şeye dönüştürürsem ... o zaman onu kullanan tüm görüşleri izlemem ve onları temizlemem gerekir. Başka bir deyişle, görüşün editör şablonlarının gerektirdiği komutlar konusunda endişelenmemesi gerektiğini düşünüyorum. Tamamen kendi kendine yeten bir editör şablonu fikrini beğendim. – ctb

cevap

-2

isteğe bağlı JQuery UI bölümü görüşünüz denir Sonra

@RenderSection("JQueryUIOptional", required: false) 

olabilir, o bölümü işlemek Mevcut istek bağlamını kullanarak gerekli javascript dosyalarını talep etmek. Editör şablonu içinde Örneğin geçerli bağlam bakarak gerekli komut dosyası oluşturmaya devam edebilir sadece herhangi opsiyonel komut bölümünün oluşturma işlemi öncesinde düzeninde Sonra

HttpContext.Current.Items["Required.Script"] = "~/myeditortemplate.js"; 

dahil javascript bir istemek için böyle bir şey yazabilirsiniz

Scripts.Render(HttpContext.Current.Items["Required.Script"].ToString()) 

Komut dosyaları, MVC'de betik gruplarından yararlanıyor. Alternativly komut dosyasını basitçe gerekli komut dosyasına yazabilirsiniz.

+0

Bu, editör şablonuna gidebilir mi? OP'nin sorduğu şey bu. –

+0

_Layout.cshtml, editörlerden birinin örneğidir ve OP'nin peşinden gider. Yani cevap evet – AutomationNation

+0

\ _Layout.cshtml bir editör şablonu değil, bir _layout_. –

1

Bir şekilde: En _Layout.cshtml sayfa İçerisinde

İlgili konular