[英]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.