在MVC2中,如果我在表单中有一个文本框和一个提交按钮(挂钩到javascript / ajax调用),按下回车键会自动触发提交按钮的javascript方法。但是在MVC3 Razor中,按Enter键会正常发布表单,而不是执行Ajax请求。 MVC2和Razor之间有什么区别?
编辑:基本上当我点击输入时会发生什么,我得到文件另存为对话框,当我保存文件并打开它时,文件的内容有响应字符串。
答案 0 :(得分:0)
如果您使用任何Ajax.*
帮助程序(例如Ajax.BeginForm
或Ajax.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- *属性。