Ajax.BeginForm MVC2和MVC3之间的行为不同吗?

问题描述

| 我在MVC2中有一段代码可以工作,但是升级到MVC3后,它不再起作用了。 我认为我有
<% using (Ajax.BeginForm(\"MyAction\",new AjaxOptions { HttpMethod = \"Post\",OnComplete = \"MyAction_OnComplete\" })) { %>
my controls here...
<% } %>

<script type=\"text/javascript\">
        function MyAction_OnComplete(content) {
                var output = eval(content.get_response().get_object());
        }
</script>
我的操作方法返回JSON对象:
[HttpPost]
public ActionResult MyAction(MyViewModel data) {
    // result = new myObject(); ....
    return new JsonResult { ContentEncoding = Encoding.UTF8,Data = result };
}
我已将JavaScript参考更新为
<script type=\"text/javascript\" src=\"<%: Url.Content(\"~/Scripts/jquery-1.5.1.min.js\") %>\"></script>
<script type=\"text/javascript\" src=\"<%: Url.Content(\"~/Scripts/jquery.validate.js\") %>\"></script>
<script type=\"text/javascript\" src=\"<%: Url.Content(\"~/Scripts/jquery.validate.unobtrusive.js\") %>\"></script>
<script type=\"text/javascript\" src=\"<%: Url.Content(\"~/Scripts/jquery.unobtrusive-ajax.js\") %>\"></script>
在web.config中,我打开了非侵入式JavaScript
<appSettings>
    <add key=\"webpages:Version\" value=\"1.0.0.0\"/>
    <add key=\"ClientValidationEnabled\" value=\"true\"/>
    <add key=\"UnobtrusiveJavaScriptEnabled\" value=\"true\"/>
</appSettings>
在MVC2中,我的客户端oncomplete事件处理程序可以解释从操作返回的JSON并执行进一步的工作,但是MVC3中的那行代码中断了而无法解析数据。 任何想法,我的代码有什么问题吗? 谢谢 哈代     

解决方法

        我认为您遇到的问题与此处所述相同:http://forums.asp.net/t/1636706.aspx/1?MVC3+Bug+using+get_response+get_object+ 总结一下:改用Ajax.BeginForm的OnSuccess事件,事件处理程序中的参数已经是对象(您不必调用任何get_response / get_object展开方法)。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...