2

最新的 Asp.Net MVC RC 允许返回 JavaScript ActionResult。
我想从控制器动态生成 Jquery 脚本代码,以执行对控制器的经典 $.ajax 调用,以在 ajax 中创建读取更新删除操作,而不是经典的获取/发布表单操作。我应该在设计时(就像现在使用 T4 模板)还是在运行时生成 javascript 代码?
我知道这会打破视图和控制器的清晰分离,但有更好的方法吗?

4

2 回答 2

2

在我看来,这是一种返回 javascript 操作结果的糟糕技术。当您对 html 元素使用内联样式时,您会收到代码混乱。为什么不将 js 写在单独的文件中并将其包含在页面中?为了在您的 ajax 调用后执行一些操作,您可以轻松地使用回调。如果您需要指定需要更新或删除的元素或其他内容,您可以使用 JsonResult 和 $.getJSON 或 $.post(url, data, callback, 'json')。为了 ajaxify 你的表单,你可以使用 jquery.form 插件。另请查看 jquery.jframe 插件,它提供了根据请求响应更新一些其他元素的功能。

于 2009-02-18T05:42:13.383 回答
0

大多数时候,当我创建一个返回 JsonResult 的控制器方法时,我最终会编写相同的样板 javascript 代码来访问它,我已经编写了数十次(可能是数百次)但使用不同的参数和传入的回调函数。我一直认为这是代码生成的绝佳机会。我仍在研究这个,但这里有一些我遇到的资源:

  • Steve Sanderson 的一篇博客文章探讨了如何使用 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 类,这些代理 javascript 类处理 ajax 编码以对服务器进行同步和异步调用。来自项目站点的示例:

    var s = new HelloWorld();

    alert("sync:" + s.greetings());

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

此外,它还会生成类似于 .NET Web 服务所做的测试页面。我过去使用过这个库,发现它很有效。虽然我喜欢继续将相关代码保留在控制器中的想法,但为了方便起见,我可能会回到这一点,这样我就可以将更多时间花在计算机无法生成的代码上。

于 2011-10-29T21:36:04.997 回答