最新的Asp.Net MVC RC允许返回JavaScript ActionResult 我想从控制器动态生成Jquery脚本代码,该代码与执行传统的$ .ajax调用,以执行ajax中的Create Read Update Delete操作而不是传统的get / post表单操作。 我应该在设计时生成javascript代码(比如现在使用T4模板)还是在运行时生成? 我知道这会打破与视图和控制器的明显分离但是有更好的方法吗?
答案 0 :(得分:2)
在我看来,返回javascript动作结果是一种糟糕的技巧。当您为html元素使用内联样式时,您将收到代码混乱。为什么不在单独的文件中编写js并将其包含在页面中?为了在你的ajax调用之后执行某些操作,你可以轻松地使用回调。如果您需要指定需要更新或删除的元素或其他内容,您可以使用JsonResult和$ .getJSON或$ .post(url,data,callback,'json')。为了激活您的表单,您可以使用jquery.form插件。另请参阅jquery.jframe插件,该插件提供了通过请求响应来更新其他元素的功能。
答案 1 :(得分:0)
大多数情况下,当我创建一个返回JsonResult的控制器方法时,我最终会编写相同的样板javascript代码来访问它,我写了几十(可能是几百)次,但具有不同的参数和不同的回调函数传入。我一直认为这是代码生成的绝佳机会。我仍然在研究这个问题,但这里有一些我遇到过的资源:
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所做的测试页面。我过去使用过这个lib,发现它很有效。虽然我喜欢继续在控制器中保留相关代码的想法,但我可能会回到此处以获得便利因素,因此我可以将更多时间花在我无法生成计算机的代码上。