我有一段代码在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中的那行代码中断而无法解析数据。
任何想法,我的代码有什么问题?
由于 哈迪
答案 0 :(得分:1)
我认为您遇到与此处所述相同的问题:http://forums.asp.net/t/1636706.aspx/1?MVC3+Bug+using+get_response+get_object+
总结一下:使用Ajax.BeginForm的OnSuccess事件,而事件处理程序中的参数已经是对象(您不必调用任何get_response / get_object解包方法)。