问题描述
|
我在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展开方法)。