MVC 4,Jquery Mobile,Ajax.BeginForm导致表单提交两次

时间:2012-06-10 17:22:22

标签: ajax jquery jquery-mobile asp.net-ajax asp.net-mvc-4

有没有人知道任何错误或其他见解来解释为什么在使用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不会出现任何这些问题。

我已经坚持了几天,所以任何帮助都会非常感激

1 个答案:

答案 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属性发布到他们发布的服务器端文件。