是否有人知道任何错误或其他见解来解释为什么将MVC4与jquery mobile一起使用时,使用Ajax.BeginForm创建的任何表单都会导致将该表单两次提交给 Controller 。

我最初以为,由于我使用的是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不会出现任何这些问题。

我已经坚持了几天,所以任何帮助将不胜感激

最佳答案

默认情况下,jQuery Mobile劫持任何表单提交并执行其自己的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属性设置为它们发布到的服务器端文件。

10-06 07:27
查看更多