MVC2和MVC3之间的默认表单提交行为似乎不同

时间:2011-06-27 16:36:31

标签: jquery .net asp.net asp.net-mvc asp.net-mvc-3

在MVC2中,如果我在表单中有一个文本框和一个提交按钮(挂钩到javascript / ajax调用),按下回车键会自动触发提交按钮的javascript方法。但是在MVC3 Razor中,按Enter键会正常发布表单,而不是执行Ajax请求。 MVC2和Razor之间有什么区别?

编辑:基本上当我点击输入时会发生什么,我得到文件另存为对话框,当我保存文件并打开它时,文件的内容有响应字符串。

1 个答案:

答案 0 :(得分:0)

如果您使用任何Ajax.*帮助程序(例如Ajax.BeginFormAjax.ActionLink),则需要删除所有Microsoft*.js脚本并将其替换为:{{ 1}},像这样:

jquery.unobtrusive-ajax.js

原因是从ASP.NET MVC 3开始,微软意识到重新发明轮子永远不是一件好事,并且不赞成使用MsAjax脚本库来支持更高级和更好的jQuery库。因此不再使用这些脚本(它们仅用于向后兼容)。 ASP.NET MVC 3 <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 帮助程序使用HTML5 data- *属性,这些属性使用jQuery进行不明显的AJAX化。

此外,您应该确保在web.config中启用了不显眼的AJAX:

Ajax.*

如果你仍然想要向后兼容或者你可以将<appSettings> ... <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> 属性设置为false,这将回退到以前的UnobtrusiveJavaScriptEnabled库(绝对不推荐)。

同样代表客户端javascript验证:默认使用jquery.validate插件,在输入字段上生成不显眼的HTML5 data- *属性。