2012-12-31 74 views
3

我正在使用mvc4並探索如何捆綁CSS和JavaScript的作品。我有一個問題,我需要幫助。mvc捆綁,每個視圖一個

對於每一頁(視圖)我渲染我想只有一個js和css文件。這是該視圖所需的多個文件的頂點。從我所看到的,我可以創建捆綁文件,但我沒有看到爲每個視圖創建捆綁包的方法。

有人可以幫我解決這個問題,如果有可能實現我所概述的?

回答

1

對你的問題更具體。告訴我們你的嘗試。您必須手動創建每個捆綁包。如果你想要在特定的視圖上使用一個bundle,那麼創建這樣一個bundle,並在視圖中指定你將使用該bundle,就像你在視圖中指定的那樣,你將在那裏使用一個css文件。

1

你需要做的是去靜態> App_Start> BundleConfig.cs:

Bundle Config path

,然後創建一個包爲每個查看您有:

public class BundleConfig 
{ 
    // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     bundles.Add(new ScriptBundle("~/bundles/GlobalScripts") 
          .Include("~/Static/Scripts/jquery-1.10.2.js" 
            , "~/Static/Scripts/json2.js" 
            , "~/Static/Scripts/jquery-ui-1.10.4.js" 
            //, "~/Static/Scripts/jquery.layout-1.3.0.js" 
            //, "~/Static/Scripts/jquery.layout.state.js" 
            , "~/Static/Scripts/helper.mainlayout.js")); 
    } 
} 

只是不斷增加您的腳本路徑爲.Include(),對於視圖中的每個javascript,併爲您擁有的每個視圖繼續執行bundles.add(new ScriptBundle(<bundle path>))

,你會如何利用CSS捆類似的步驟,但不是使用ScripBundle您將使用StyleBundle

爲了減少代碼的重複嘗試爲每一個依賴於彼此並且做的JavaScript字符串列表對他們的工會:

List<string> jqGridScripts = new List<string> 
          {"~/Static/Scripts/jquery.jqGrid.src.js" 
          , "~/Static/Scripts/i18n/grid.locale-en.js" 
          , "~/Static/Scripts/helper.jqgrid.js"}; 
List<string> jqStopwatch = new List<string> 
          { "~/Static/Scripts/jquery.stopwatch.js" }; 

bundles.Add(new ScriptBundle("~/bundles/viewName") 
          .Include(jqGridScripts 
            .Union(jqStopwatch).ToArray())); 

只要記住,在它們出現的陣列上的順序,他們將出現在HTML或捆綁和精縮順序相同。

代碼在瀏覽:

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

由此得到的代碼在HTML

<script src="/WDCSS/bundles/viewName?v=T3IlBuvfGTiz62pwDuiPogFX1jQoxVC2tmp3K6wffBQ1"></script> 

我的意見的

我真的不知道我們是否應該這樣做或不。對我來說,我將獨立包中所有頁面中使用的腳本分開,以便將其緩存。然後爲視圖中使用的腳本創建另一個包。我想說的是我們應該在捆綁,縮小和緩存之間取得平衡。