【问题标题】:Can ASP.NET MVC return a javascript response like Ruby on Rails can?ASP.NET MVC 可以像 Ruby on Rails 一样返回 javascript 响应吗?
【发布时间】:2011-04-28 04:06:51
【问题描述】:

我正在深入研究 ASP.NET MVC,并且来自 Ruby on Rails 背景。我试图了解 ASP MVC 如何处理 AJAX 功能,并且在阅读了 ASP 网站上的一些教程之后,似乎它们实现 AJAX 功能的方式非常不同。 RoR 处理 AJAX 功能的方法之一是返回嵌入 ruby​​ 的 javascript 代码,该代码在浏览器收到后立即执行。这使得实现 AJAX 变得非常简单而且非常有趣。 ASP.NET MVC 可以返回 javascript 响应吗?

【问题讨论】:

    标签: ruby-on-rails asp.net-mvc ajax asp.net-mvc-2 asp.net-ajax


    【解决方案1】:

    只是用户 返回 JavaScript(脚本)

    您必须在视图上手动执行 java 脚本

    更具体地说,您可以使控制器操作返回 JavaScriptResult 类型

    【讨论】:

    【解决方案2】:

    您所说的在 RoR 世界中称为 javascript 生成器,在 ASP.NET MVC 世界中没有等效的。这是一个blog post,它说明了为 ASP.NET MVC 实现类似 Rails 的 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);
        }
    });
    

    【讨论】:

    • 嘿达林,我有什么理由要使用该博客文章中介绍的方法而不是使用@Andrey 指出的内置方法?再次感谢!
    • 这取决于您的要求。 @Andrey 提出的方法很好,但是您必须手动生成 javascript,包括循环、ifs、... 作为字符串并将其传递给视图,而不是在真实模板中使用类似 RJS 的语言。因此,您最终可能会在控制器中编写 javascript,恕我直言,这是不好的。
    • @BeachRunnerJoe,请参阅我的更新以了解替代方法。
    【解决方案3】:

    同样值得一看的是JsonResult,它扩展了ActionResult。我通常在对某种数据进行 AJAX 请求时使用它。

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 2014-10-08
      • 1970-01-01
      • 2010-11-08
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多