javascript - Ajax.BeginForm 强制完全回发

标签 javascript asp.net-mvc ajax.beginform

我如何强制 Ajax.BeginForm(MVC3,不显眼)进行完整的回发?

在 MVC2 中,我刚刚清除了“onclick”和“onsubmit”处理程序。我如何在 MVC3 中执行此操作?

//does not work in MVC 3 with unobtrusive ajax :((
$('#myForm').unbind('click');
$('#myForm').unbind('submit');

附言。如果您有兴趣,我需要这个来上传文件。如果没有文件正在上传 - ajax 就可以了。如果正在上传文件 - 让它进行完整的回发。

更新:

在查看“jquery.unobtrusive-ajax.js”源代码后,我看到了这个:

$("form[data-ajax=true]").live("submit", blahblah);

所以我想到了这个并且它有效:

$("form[data-ajax=true]").die("submit");

但这似乎有点“hacky”,有什么“合法”的方法可以清除表单中的所有 onsubmit 事件吗?我想现在更新的问题是:如何使用使用不同选择器的“死亡”语句清除“实时”事件处理程序?

最佳答案

如果您不介意修改不显眼的库..您可以在提交事件处理程序中检查表单是否包含任何文件,如果是,则通过 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())
      });
    }
  });

关于javascript - Ajax.BeginForm 强制完全回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10976209/

相关文章:

javascript - 如何在不使用全局变量的情况下在 javascript 中存储和访问 ajax 数据?

c# - MongoDB 计算某个项目在另一个表中被引用的次数

javascript - 强制浏览器在 asp.net 应用程序中获取最新的 js 和 css 文件

jquery - 使用下拉列表的 Ajax.beginform 回发表单

javascript - 如何通过名称获取 AJAX.BeginForm' onsuccess 被调用的表单或 div

javascript - 选中该字段的复选框时设置 Attr Required

JavaScript:谁决定客户端 API?

javascript - 像堆栈溢出一样跨越 upvote 插件时显示错误

asp.net-mvc - jQuery Mobile、Ajax 导航和 MVC

asp.net-mvc - 如何从Ajax表单中在asp.net mvc中提交下拉列表