繁体   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