2010-10-20 68 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请求时通常会使用它。

相关问题