簡體   English   中英

Ajax.BeginForm強制全回發

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM