我有一个分成标签的 MVC3 页面。每个选项卡都有一个带有不同 id 的 AJAX 表单的部分视图。
@using (Ajax.BeginForm("Create1", "ControllerName", ajaxOptions, new { id = "frmCreate1" }))
...
@using (Ajax.BeginForm("Create2", "ControllerName", ajaxOptions, new { id = "frmCreate2" }))
...
@using (Ajax.BeginForm("Create3", "ControllerName", ajaxOptions, new { id = "frmCreate3" }))
每个选项卡上都有一个具有不同 ID 的保存按钮。
<input type="submit" id="btnSave1" />
...
<input type="submit" id="btnSave2" />
...
<input type="submit" id="btnSave3" />
...
每个选项卡都包含一个包含按钮处理程序的 javascript 文件:
// Submit Button
$('#btnSave1').button({ label: "Save" });
$('#btnSave1').click(function () {
$.blockUI({ message: 'We are constructing your new Type 1, please wait just a moment...', theme: true, title: 'Saving' });
$('frmCreate1').trigger('submit');
});
...
// Submit Button
$('#btnSave2').button({ label: "Save" });
$('#btnSave2').click(function () {
$.blockUI({ message: 'We are constructing your new Type 2, please wait just a moment...', theme: true, title: 'Saving' });
$('frmCreate2').trigger('submit');
});
...
// Submit Button
$('#btnSave3').button({ label: "Save" });
$('#btnSave3').click(function () {
$.blockUI({ message: 'We are constructing your new Type 3, please wait just a moment...', theme: true, title: 'Saving' });
$('frmCreate3').trigger('submit');
});
一切都正确提交到后端,它从表单中获取所需的数据。但是我将方法中的选择器更改为
$('#frmCreate1).trigger('submit');
现在,当运行它时,表单被多次提交,导致我跳入调试器并随后两次发布相同的数据。
我猜它是通过 Ajax 使用正确的选择器提交表单,然后再次触发表单的实际提交,但我不确定发生了什么。
我想确保代码就我真正想做的事情而言是正确的。这些应该是 3 个单独的单独提交。我是否将“提交”按钮更改为仅按钮类型而不是提交,还是应该在 javascript 中有更多内容以防止发生第二次提交?preventDefaults 什么的?
谢谢!
编辑:还应该包括 Ajax 选项,它们出现在每个选项卡上并对应于选项卡,它们的名称都不同,但以防万一“发布”方法与此有关。
@{
AjaxOptions ajaxOptions = new AjaxOptions
{
HttpMethod = "Post",
UpdateTargetId = "tabs-1",
};
}