[英]Ajax.BeginForm force full postback
如何强制Ajax.BeginForm(MVC3,不显眼)进行完整的回发?
在MVC2中,我只是清除了“ onclick”和“ onsubmit”处理程序。 我该如何在MVC3中执行此操作?
//does not work in MVC 3 with unobtrusive ajax :((
$('#myForm').unbind('click');
$('#myForm').unbind('submit');
PS。 如果您有兴趣,我需要此文件进行上传。 如果没有文件上传-ajax可以。 如果文件正在上传-请对其进行完整的回发。
更新:
查看“ jquery.unobtrusive-ajax.js”源代码后,我看到了以下内容:
$("form[data-ajax=true]").live("submit", blahblah);
所以我想出了这个,它的工作原理是:
$("form[data-ajax=true]").die("submit");
但这似乎有点“ hacky”,从表格中清除所有onsubmit事件的“合法”方法吗? 我猜现在更新的问题是: 如何使用使用不同选择器的“ die”语句清除“活动”事件处理程序?
如果您可以修改不引人注目的库,则可以..您可以在Submit事件处理程序中检查表单是否包含任何文件,如果是,则通过AJAX执行完整的POST。
$("form[data-ajax=true]").live("submit", function (evt) {
var clickInfo = $(this).data(data_click) || [];
evt.preventDefault();
if (!validate(this)) {
return;
}
if ($("input[type=file]", this).val()) {
this.submit();
}
else {
asyncRequest(this, {
url: this.action,
type: this.method || "GET",
data: clickInfo.concat($(this).serializeArray())
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.