最新的Asp.Net MVC RC允許返回JavaScript ActionResult。
我想從控制器動態生成Jquery腳本代碼,該代碼關聯執行傳統的$ .ajax調用,以控制器在ajax中創建讀取更新刪除操作,而不是傳統的get/post表單操作。 我應該在設計時(比如現在是用T4模板)還是在運行時生成JavaScript代碼?
我知道這將打破從視圖和控制器的明確分離,但有沒有更好的辦法?Javascript結果生成Jquery CRUD ajax操作
回答
在我看來,這是一個不好的技術來返回JavaScript的行動結果。當您爲html元素使用內聯樣式時,您會收到代碼混亂。爲什麼不把js寫入單獨的文件中,並將其包含在頁面中?爲了在你的ajax調用之後執行一些操作,你可以輕鬆地使用回調。如果您需要指定需要更新或刪除的元素或其他內容,則可以使用JsonResult和$ .getJSON或$ .post(url,data,callback,'json')。爲了Ajax化你的表單,你可以使用jquery.form插件。另請參閱jquery.jframe插件,它提供了使用來自請求的響應更新其他元素的功能。
大多數情況下,當我創建一個返回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所做的測試頁。我過去曾經使用這個庫,並發現它很有效。雖然我喜歡繼續在控制器中保留相關代碼的想法,但我可能會回過頭來考慮這個方便因素,因此我可以花更多時間在我無法使用計算機生成的代碼上。
- 最後,菲爾哈克的過去這樣做,我們這裏所說的(我沒有試過還)非常的事,http://haacked.com/archive/2011/08/18/calling-asp-net-mvc-action-methods-from-javascript.aspx
- 1. Rails 3.1 jquery Ajax CRUD操作
- 2. CRUD操作
- 3. CRUD操作的Grails
- 4. ASP.NET MVC Ajax的操作結果包圍
- 5. jquery ui自動完成 - 操縱結果
- 6. cakePHP和CRUD操作授權
- 7. AJAX jQuery的成功服務器操作
- 8. AJAX/JQuery成功:/錯誤:函數操作
- 9. 不斷返回JavaScript/jQuery的Ajax結果?
- 10. 支持CRUD操作的jQuery樹插件
- 11. Timedelta操作產生錯誤的結果
- 12. SQLiteOpenHelper和CRUD操作
- 13. Django角度CRUD操作
- 14. 在jquery ajax中顯示jquery ajax成功結果
- 15. PrintDocument.Print結果Win32Exception將操作成功
- 16. 使用javascript生成表單結果
- 17. 結果的「操作符 - >()」產生非指針結果
- 18. 從操作結果
- 19. Javascript/JQuery/AJAX否則如果不工作
- 20. Gradle生成結果
- 21. 生成HTML結果
- 22. LaTeX生成結果
- 23. 簡單Crud使用AJAX/JQUERY
- 24. 模板的jdbc CRUD操作
- 25. 使用html5的CRUD操作
- 26. REST首選CRUD操作
- 27. 使用codeigniter的CRUD操作
- 28. Javascript和jQuery操作
- 29. JavaScript Ajax保存結果
- 30. Jqgrid Ajax成功結果