首页 > 代码库 > MVC 4.0 Ajax.BeginForm返回JavaScript对象不成功

MVC 4.0 Ajax.BeginForm返回JavaScript对象不成功

由于存在js版本的兼容性,而在vs里面如果没有通过Nuget更新jquery.unobtrusive-ajax.js版本的话,那jquery版本就应该仅限定于1.7-1.8之间,如果引用2.1的话,那么微软自己封装的一套Ajax就不能用了,所以,大家在使用Ajax.BeginForm的时候,如果遇到一些问题,不妨尝试下降低下jquery的版本,或许你的问题就会迎刃而解;

一:jquery.unobtrusive-ajax.js与MicrosoftAjax.js、MicrosoftMvcAjax.js的区别

在MVC 1,2版本中,他们使用自己的Ajax类库来实现ajax请求,相应的js文件为MicrosoftAjax.js,MicrosoftMvcAjax.js
但是程序员更喜欢jQuery,“write less, do more ”,而微软意识到这一点,软后就慢慢接受jquery ,然后就有了jquery.unobtrusive-ajax.js;

要使MicrosoftAjax.js、MicrosoftMvcAjax.js能正常使用的话,必须要在在web.config中增加client side validation and unobtrusive javascript 两个配置
<add key="ClientValidationEnabled" value="http://www.mamicode.com/true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="http://www.mamicode.com/true" /> 

,只有在这个时候,之前的Ajax.BeginForm查询到后台函数才能按照你的意愿来。

可是如果您想要用jquery.unobtrusive-ajax.js(更加轻便),可以直接将true设置为false,或者将这两个配置给删掉。

上面引用两种不同js文件的时候,都要注意一下js版本的问题,因为微软出了这两套js文件还是很早了,特别是MicrosoftAjax.js、MicrosoftMvcAjax.js这两个js文件,如果一直不行就一直降低js版本,一直到得行就可以了!

二:Content与JavaScript的区别

Content是返回一个字符串,然后到前台中会自动解析成一段HtmlString。

而JavaScript是返回一个js代码,然后在前台中会自动插入到js脚本中去执行。可是JavaScript能做的,Content都能做,只需将Content中的字符串改变一下就可以了,如:

return JavaScript("alert(‘哈哈!‘)");

return Content("<script type=‘text/javascript‘>alert(‘哈哈!‘);</script>")

上面两种效果是一样的!

所以大家适当考虑下自己编码适当的风格;

接下来请允许我盗一张图来解释下其中的关系

技术分享

 

MVC 4.0 Ajax.BeginForm返回JavaScript对象不成功