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

时间:2011-06-14 01:17:15

标签: json asp.net-mvc-3

我有一段代码在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>

我的action方法返回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中的

我打开了Unobtrusive 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中的那行代码中断而无法解析数据。

任何想法,我的代码有什么问题?

由于 哈迪

1 个答案:

答案 0 :(得分:1)

我认为您遇到与此处所述相同的问题:http://forums.asp.net/t/1636706.aspx/1?MVC3+Bug+using+get_response+get_object+

总结一下:使用Ajax.BeginForm的OnSuccess事件,而事件处理程序中的参数已经是对象(您不必调用任何get_response / get_object解包方法)。