2013-04-24 77 views
2

我寫了一個新的應用程序,它將使用現有的主題,該主題將由設計人員更改。ScriptBundle(「〜/ Scripts/vendor」)

所以我決定,而不是把在腳本中的腳本和其他一切內容(CSS,圖像),只保留在主題文件夾中的主題(與子目錄 - JS,CSS,IMG)

所以我嘗試更改腳本捆綁指向我的劇本在主題/ JS來代替腳本

我改成了

bundles.Add(
      new ScriptBundle("~/Scripts/vendor") 
      .Include("~/Theme/js/jquery-{version}.js") 
      .Include("~/Theme/js/knockout-{version}.debug.js") 
      .Include("~/Theme/js/sammy-{version}.js") 
      .Include("~/Theme/js/toastr.js") 
      .Include("~/Theme/js/Q.js") 
      .Include("~/Theme/js/breeze.debug.js") 
      .Include("~/Theme/js/bootstrap.js") 
      .Include("~/Theme/js/moment.js") 
     ); 

我不明白的是線

new ScriptBundle("~/Scripts/vendor") 

如果我離開它這是上面(即使沒有腳本/供應商的文件夾,代碼工作不錯,但F I將其更改爲

new ScriptBundle("~/Theme/js/vendor") 

我收到網絡錯誤的螢火:

"NetworkError: 404 Not Found - http://localhost:51154/scripts/vendor" 

其餘的腳本未加載。

那條線是幹什麼的?

由於

回答

4

bundles.Add(ScriptBundle)方法增加了一個腳本束束表,這可以通過提供給ScriptBundle(string)構造字符串指。

所以用new ScriptBundle("~/Foo")創建並添加到bundles的包,可以稍後使用@Scripts.Render("~/Foo")呈現。

您可能忘記的是將您的_layout.cshtml中的@Scripts.Render("~/Scripts/vendor")更改爲@Scripts.Render("~/Theme/js/vendor"),那將是您看到的錯誤。

傳遞給構造函數的參數僅僅是作爲documented「爲捆綁虛擬路徑」,所以你必須找出你可以和不能把那意味着什麼,什麼在那裏。

+0

謝謝,我編輯和添加了錯誤味精 – bzamfir 2013-04-24 16:10:05

+0

右鍵,呈現當時我並沒有改變DLE。這樣做解決了問題 – bzamfir 2013-04-24 16:11:58

1

我有一個類似的問題,我通過確保ScriptBundle(xx)中使用的別名與我的實際文件系統(在您的情況下,Theme/js是bundle和您包含的腳本

ScriptBundle類將所有包含的js文件打包到一個縮小的包中,該下載包比單獨的多個GET調用更有效,注意如果您正在調試解決方案並運行您的站點在VS中的調試器下,捆綁軟件並未交付以幫助調試,而是將離散的js文件發送到客戶端。僅在<system.web\><compilation debug="false" ...>時才提供捆綁軟件。

+0

是的,我有同樣的事情。一個目錄存在與別名完全相同的名稱,這將阻止ScriptBundle正常工作。確保別名是唯一且不存在的。 – 2013-07-26 12:08:05

+0

「...僅當*時* *服務? – ErikE 2016-02-23 21:29:12

+0

:)剛剛更新了答案,我忘記逃避文本,因爲它有尖括號。 – 2016-02-23 22:26:07

1

您正在創建一個ScriptBundle,該字符串被標識爲字符串值「〜/ Scripts/vendor」,並且可以使用此捆綁包標識符進行渲染。

當您使用Include(...)時,此值表示要與該捆綁包一起使用的資源的相對路徑。

bundles.Add(
      new ScriptBundle("~/Scripts/vendor") 
      .Include("~/Theme/js/jquery-{version}.js") 
      .Include("~/Theme/js/knockout-{version}.debug.js") 
      .Include("~/Theme/js/sammy-{version}.js") 
      .Include("~/Theme/js/toastr.js") 
      .Include("~/Theme/js/Q.js") 
      .Include("~/Theme/js/breeze.debug.js") 
      .Include("~/Theme/js/bootstrap.js") 
      .Include("~/Theme/js/moment.js") 
     ); 
相關問題