2009-02-16 84 views
2

最新的Asp.Net MVC RC允許返回JavaScript ActionResult。
我想從控制器動態生成Jquery腳本代碼,該代碼關聯執行傳統的$ .ajax調用,以控制器在ajax中創建讀取更新刪除操作,而不是傳統的get/post表單操作。 我應該在設計時(比如現在是用T4模板)還是在運行時生成JavaScript代碼?
我知道這將打破從視圖和控制器的明確分離,但有沒有更好的辦法?Javascript結果生成Jquery CRUD ajax操作

回答

2

在我看來,這是一個不好的技術來返回JavaScript的行動結果。當您爲html元素使用內聯樣式時,您會收到代碼混亂。爲什麼不把js寫入單獨的文件中,並將其包含在頁面中?爲了在你的ajax調用之後執行一些操作,你可以輕鬆地使用回調。如果您需要指定需要更新或刪除的元素或其他內容,則可以使用JsonResult和$ .getJSON或$ .post(url,data,callback,'json')。爲了Ajax化你的表單,你可以使用jquery.form插件。另請參閱jquery.jframe插件,它提供了使用來自請求的響應更新其他元素的功能。

0

大多數情況下,當我創建一個返回JsonResult的控制器方法時,我最終編寫了相同的樣板JavaScript代碼來訪問它,我寫了幾十次(可能是數百次),但使用不同的參數和不同的回調函數通過了。我一直認爲這是代碼生成的絕好機會。我仍然在尋找到這一點,但這裏有一些資源,我也碰到過:

  • 史蒂夫·桑德森博客中考慮使用T4腳手架出AJAX網格控制器,其中包括一些產生的JavaScript線了網格。 http://blog.stevensanderson.com/2011/04/08/mvcscaffolding-scaffolding-custom-collections-of-files/
  • Jayrock(http://jayrock.berlios.de/)是一個JSON RPC框架,可幫助您創建返回JSON的服務並生成它自己的代理JavaScript類,它處理ajax編碼以進行同步和異步調用服務器。來自項目網站的示例:

    var s = new HelloWorld();

    alert(「sync:」+ s.greetings());

    s.greetings(function(response){ alert(「async:」+ response.result) });

此外,它生成類似於.NET webservices所做的測試頁。我過去曾經使用這個庫,並發現它很有效。雖然我喜歡繼續在控制器中保留相關代碼的想法,但我可能會回過頭來考慮這個方便因素,因此我可以花更多時間在我無法使用計算機生成的代碼上。