5

有谁知道任何错误或其他见解来解释为什么将 MVC4 与 jquery mobile 一起使用时,使用 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 没有表现出任何这些问题。

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

4

1 回答 1

8

默认情况下,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表单的属性添加到它们发布到的服务器端文件中。

于 2012-06-10T17:54:28.290 回答