2

我在Helpers.cshtml許多文件的HTML幫助,但一些幫手(HTML)的需要一些jQuery的動作,讓我怎麼可以叫內helpers.cshtml jQuery的,那可能嗎?HTML傭工Javascsript行動

我知道我們能繼續保持頁眉或特定頁面的js文件,但我不希望做這樣的,我只希望這加載特定助手頁面上使用jquery或javascript。

人有這樣的想法? 我的場景是,我有列表框控件,這是從助手正確加載,但我需要將自定義主題應用於列表框。

小更清晰

//in index.cshtml 
@Helpers.testListBox("mylist" "1,2,3,4,5,6,7") 


//in Helpers.cshtml 
@helper testListBox(string listName, string listData){ 

    //...... HTML code ......... 

    //Javascript here? 

} 
+0

雖然我不是這樣的粉絲,但我已經看到人們用[腳本管理器]處理這個問題(http://pietschsoft.com/post/2009/08/13/Simple-ScriptManager-for-ASPNET- MVC.aspx)。不引人注意的Javascript是一個更清潔的方法。 – 2012-02-08 16:11:35

回答

5

隨着Web窗體,框架可以自動包含Javascript(一次)當某個服務器對照頁面上使用; ASP.Net MVC沒有這樣的設施。聽起來這就是你想要的。

做到這一點的方法是在客戶端上。在http://requirejs.org/處查看RequireJS。這是一個用於管理Javascript依賴關係的客戶端庫。這就是Web Forms所做的,但更好,而且它做得更多。你的主人佈局將有一個腳本標籤是這樣的:

<script src="/Scripts/require.js" type="text/javascript" data-main="/Scripts/main"></script> 

這可能是唯一的腳本標籤,你包括在每一頁上。只有RequireJS需要時才能動態加載其他所有內容。確實,你在每一頁上加載這個,但它比jQuery小,並且它贏得了它的位置,因爲它爲你做了很多。

使用你的例子,假設你有這樣的標記:

@Helpers.testListBox("mylist" "1,2,3,4,5,6,7") 

和它呈現HTML,需要jQuery的腳本。你會呈現這樣的:

// HTML for list box here 

<script type="text/javascript> 
require(['jquery'], function($) { 
    // Do your jQuery coding here: 
    $("myList").doSomething().whatever(); 
}); 
</script> 

require功能將加載jQuery的,除非它已經被加載,然後執行代碼。確實,您的jQuery片段在每次使用HTML助手時重複一次,但這不是什麼大問題;該代碼應該很短。

RequireJS有效管理的依賴;您可以擁有模塊A和依賴於A的模塊B以及依賴於B的模塊C.當您的客戶端代碼要求模塊C時,A和B將與C一起裝載,並且順序正確,並且只有一次每。此外,除了require.js的初始加載之外,腳本是異步加載的,因此您的頁面渲染不會因腳本加載而延遲。

當它的時間到Web服務器上部署你的網站,有一個工具,將檢查Javascript文件之間的依賴關係,並將它們組合成一個或少數幾個文件,然後最小化他們。你的標記根本不需要改變。在開發過程中,您可以使用大量小型模塊化JavaScript文件進行調試,並且在部署時將它們組合在一起並最小化以提高效率。

這比web表單框架所做的要好得多,完全是客戶端,在我看來它就是它的所在。

+0

嘿,卡爾,你的方法真的很好,這是我期待的,偉大的答案,謝謝。讓我試試這個想法! – manny 2012-02-08 18:54:00

0

你可以把一個<script>標籤在助手身上。

+0

請演示如何... – gdoron 2012-02-08 15:30:01

+1

@gdoron:與使用其他標籤相同的方式。 – SLaks 2012-02-08 15:30:34

+1

我不確定這是在幫助器中調用

  • 11. 使用傭工Meteorjs
  • 12. 僅加載傭工
  • 13. 閱讀傭工Zend_View_Helper_ *和自動加載
  • 14. 早該傭工不工作
  • 15. 訪問URL傭工routes.rb中
  • 16. select_tag傭工grouped_options_for_select爲了
  • 17. 質疑座傭工Handlebars.js
  • 18. 測試傭工因緣
  • 19. 梅勒傭工的Rails 3
  • 20. 如何格式化HTML傭工的WebGrid列
  • 21. Ember Qunit傭工不能正常工作
  • 22. 自動分銷商佣金
  • 23. 使用收集傭工流星表格
  • 24. Rails的:路線傭工嵌套資源
  • 25. 如何添加傭工的fancybox
  • 26. 扶手:路由和路徑傭工
  • 27. Laravel形式傭工路線別名
  • 28. CakePHP的AUTOMAGIC形式傭工協會
  • 29. Rails的路線傭工的map.connect
  • 30. 中間人傭工降價文件