有没有人知道任何错误或其他见解来解释为什么在使用jquery mobile使用MVC4时,使用Ajax.BeginForm创建的任何表单都会导致表单被提交两次到控制器。
我原本以为,因为我使用js捆绑,相同的js文件可能被包含两次并且可能在表单提交时触发,但事实并非如此,我的js文件列表是:
jquery-1.6.4.js
jquery-ui.1.8.11.js
jquery.mobile-1.1.0.js
jquery.unobtrusive-ajax.js
jquery.validate.js
knockout-2.0.0.js
MicrosoftAjax.js
MicrosoftMvcAjax.js
MicrosoftMvcValidation.js
Modernizr.js
在项目中,Ajax完全启用了所有功能,即我没有通过mobileinit禁用任何内容。
我没有发布任何表单代码,因为它确实发生在每个表单中 - 带有一个字段和提交按钮的表单将导致提交两次 - 但仅限于使用Ajax.BeginForm的地方。
Html.BeginForm不会出现任何这些问题。
我已经坚持了几天,所以任何帮助都会非常感激
答案 0 :(得分:8)
jQuery Mobile默认情况下hi-jacks任何表单提交并执行自己的AJAX请求。要停止此行为,您可以将data-ajax="false"
属性放在任何<form>
标记上。另外,请确保停止表单的常规行为,以使其无法正常提交,例如:
$('#my-form').on('submit', false);
文档:http://jquerymobile.com/demos/1.1.0/docs/forms/forms-sample.html
您也可以使用内置的jQuery Mobile AJAX而不是包含额外的JS。这只需要您将表单的action
属性发布到他们发布的服务器端文件。