Soru Komut dizisi görünümünde komut dosyası grubu nasıl eklenir?


Bir düzen var @RenderSection("scripts") bölüm ve bu bölümde yer alması gereken bir paket var bazı görünümleri. Bunu sadece görüşte yapmak işe yarayacaktı, ama senaryoları oluşturmuyor.

@section scripts {
    @Scripts.Render("~/bundles/myBundle")  
}

Benim görüşüme göre, betik bölümüne nasıl bir paket ekleyebilirim?

düzen

@Scripts.Render("~/bundles/jquery", "~/bundles/scripts")
@RenderSection("scripts", required: false)

Görünüm

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}

32
2017-12-01 15:30


Menşei


Bu kesinlikle çalışmalı ve desteklenmelidir. Paket adında yazım hatalarını kontrol ederim - ör. onun emin yapar ~/bundles/movie ve yok ~/scripts/movie senin içinde BundleConfig. - Mrchief
Buraya inanılmaz geç kaldım, ama görünüşe göre VS2015'te bile bu olabilir. Kod doğru, ancak doğru şekilde görüntülenmesi için VS'yi yeniden başlatmam gerekiyordu. - Lathejockey81


Cevaplar:


Yapıştırmayı demetleme ile neden karıştırın? Paketleme rotasını azaltmayı seçerseniz, komut dosyalarınızı .JS dosyasına koyabilirsiniz, isterseniz kendi paketinize koyun ve bu paketi görünümünüzde arayın. Örneğin:

     bundles.Add(new ScriptBundle("~/bundles/myscripts").Include(
                    "~/Scripts/myscript1.js",
                    "~/Scripts/myscript2.js")); 

sonra görünümü aşağıdakilere sahip olacaktır:

    @Scripts.Render("~/bundles/myscripts")   

Ayrıca Web.config dosyanızın aşağıdaki gibi false olarak ayarlanmış derleme hata ayık olduğundan emin olun:

  <compilation debug="false" />            

Scriptlerin paketlendiğinden ve minimize edildiğinden emin olur.

Güncelleştirme

Yorumlar ve son deneyimlerime dayanarak, ikisini neden birlikte kullanmak istediğimizi görebiliyorum. Toplumda mükemmel öğrenme durumu! :) Yani, eğer geri dönüş için geri dönmeye karar verirseniz, başlamak için yazım hataları olmadığından emin olacağım. Eğer hala çalışmıyorsa, lütfen sorunun ne olduğunu bana bildirin ve cevabı buna göre güncelleyeceğim. Herkese teşekkürler!


15
2017-12-01 18:14



Çünkü düzende jquery paketinden sonra yüklemek için pakete ihtiyacım var. Yukarıdaki gibi kümeyi görünümümde oluşturarak jquery bundle'dan önce işlenecektir. - bflemi3
Genellikle jQuery paketini sayfanın en altındaki varsayılanın tersine en üstte koyuyorum ve her şey iyi çalışıyor. bu MVC müzik mağazası kodunu kontrol et github.com/tekpub/mvcmusic/tree/master/MvcMusicStore - Yogiraj
Her sayfada her şeyi işlemek istemeyebilirsiniz. Bölümleme, bunun kontrolünü size verir. Her şeyi kafasına koymak korkunç bir çözümdür (jQuery bir istisna olabilir). - Mrchief


İçerisinde belirtilen çözümü deneyin. Görünüm.

Görünüm 

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

36
2017-12-01 16:46



Bunu kabul edilen cevap olarak kabul edin. - Leandro Tupone
Bu neden kabul edilen cevap olmalı? Bu yok sayar debug bayrağı. - Dementic
@Diyatik Neden kendi cevabınızı koymuyorsunuz? - Sampath
çalışmıyor - Nadeem Khoury
"~ / Content / css / my.css? v = 4" paketinde "? v = 4" öğesini kaldırıncaya kadar çalışmıyordu. Stiller değiştiğinde tarayıcı önbelleğini temizlemek için kullanın. - numbtongue


Yaşadığınız sorunu çoğaltamam

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}

hiçbir sorun olmadan iyi sonuç verir (ve debug bayrağına saygı duyar) @Mrchref ile aynı fikirdeyim ve yollarınızı tekrar ziyaret ediyorum

Öte yandan, böyle bir şey kullanabilirsiniz:

public static class Helpers
{
    public static HtmlString StaticContent(this System.Web.Mvc.UrlHelper url, string contentPath)
    {
        return new HtmlString(System.Web.Optimization.Scripts.Render(contentPath).ToString());
    }
}

Kullanımı:

@section Scripts{
    @Url.StaticContent("~/assets/js/jquery")
}

bunu olduğu gibi kullanmamanızı tavsiye ederim İçin başka bir çözüm bulmanız gerekecek System.Web.Optimization.Scripts.Render(contentPath).ToString() Temelde kullandığınız işlevi (ve çalışmayan) oluşturduğundan.

İle oynamak gerekir System.Web.Optimization.BundleTable.Bundles ve her iki sürümü de sorgulayabileceğinizi, hata ayıklama bayrağını kontrol edip doğru içeriği sunup sunamayacağınızı görün.


2
2017-08-04 19:16





Yeni bir yapının senin problemini çözeceğine inanıyorum. Lütfen aşağıdaki adımları izleyin:

  • Aşama 1: bunu içine ekle BundleConfig.cs

    bundles.Add(new ScriptBundle("~/bundles/common").Include("~/Scripts/common.js"));

  • Adım 2: bu satırı sizin listenize ekleyin view/layout 

    @Scripts.Render("~/bundles/common")

  • Aşama 3: projeni inşa et ve çalıştır.


1
2017-08-01 17:08