2010-10-20 63 views
3

我正在潛入ASP.NET MVC,我來自Ruby on Rails背景。我試圖理解ASP MVC如何處理AJAX功能,並且在閱讀了ASP網站上的一些教程之後,看起來他們實現AJAX功能的方式非常不同。 RoR處理AJAX功能的方式之一是返回ruby嵌入的JavaScript代碼,一旦瀏覽器接收到該代碼就會執行它。這使得實現AJAX非常簡單而且非常有趣。 ASP.NET MVC可以返回JavaScript響應嗎?ASP.NET MVC可以像Ruby on Rails一樣返回JavaScript響應嗎?

回答

4

只是用戶 返回的JavaScript(腳本)

你將不得不在視圖手動執行Java腳本

更具體地可以使控制器動作返回類型JavaScriptResult

+0

謝謝,這看起來很簡單,類似於我用過RoR的東西。這裏有一篇我發現與JavaScriptResult類型相關的小博客文章,似乎值得一提http://devlicio.us/blogs/billy_mccafferty/archive/2009/02/07/beware-of-asp-net-mvc-javascriptresult.aspx – BeachRunnerFred 2010-10-20 16:59:11

3

什麼你所談論的在RoR世界中被稱爲JavaScript生成器,並且在ASP.NET MVC世界中沒有等價物。這裏有一個blog post,它演示了爲ASP.NET MVC實現Rails-like RJS的基礎知識(博客文章使用prototypejs,但可以很容易地與jquery配合使用)。


這裏的另一種方法使用jQuery:

public ActionResult Foo() 
{ 
    return Json(new { prop1 = "value1", prop2 = "value2" }); 
} 

和消費:

$.getJSON('/home/foo', function(result) { 
    // TODO: use javascript and work with the result here, 
    // the same way you would work in a RJS like template 
    // but using plain javascript 
    if (result.prop1 === 'value1') { 
     alert(result.prop2); 
    } 
}); 
+0

很棒的博客文章,謝謝。 – BeachRunnerFred 2010-10-20 16:45:53

+0

嗨達林,有沒有什麼理由我想使用該博客文章中提供的方法,而不是使用@Andrey指出的內置方法?再次感謝! – BeachRunnerFred 2010-10-20 16:57:37

+0

這取決於您的要求。 @Andrey提供的方法很好,但是您必須手動生成JavaScript,包括循環,ifs,...作爲字符串,並將其傳遞給視圖,而不是在真實模板中使用某些類似RJS的語言。所以你可能最終會寫你的控制器,恕我直言,是壞的JavaScript。 – 2010-10-20 17:04:41

1

另外值得一看就是JsonResult延伸的ActionResult。我在進行某種數據的AJAX請求時通常會使用它。

相關問題