【问题标题】:Submit Ajax.BeginForm via ActionLink通过 ActionLink 提交 Ajax.BeginForm
【发布时间】:2012-11-07 17:42:53
【问题描述】:

我正在尝试使用超链接而不是提交按钮来提交 Ajax.BeginForm。我使用提交按钮进行了测试,该操作通过测试 Request.IsAjaxRequest 将帖子识别为基于 Ajax,但是如果我尝试以下 IsAjaxRequest 将返回 false:

<a href="javascript:void(0)" onclick="javascript:document.forms[0].submit(); return false;">Update</a>

【问题讨论】:

  • 为什么不坚持提交按钮?
  • 这是一项要求,但我确实找到了解决方法,我正在使用链接触发提交按钮单击。我在页面上隐藏了提交按钮。

标签: c# asp.net-mvc-3 jquery asp.net-ajax


【解决方案1】:

表单与 Microsoft 的 Ajax 库挂钩,因此您不能只调用 form.submit(),因为连接的 ajax 事件未激活。您有几个选择:

  • 使用提交按钮而不是链接
  • 删除 MS Ajax 的东西并使用 jQuery 手动连接您的 ajax 帖子(这就是我会做的)
  • 调用 MS Ajax 提交函数

对于第三个选项,而不是

onclick="javascript:document.forms[0].submit(); return false;"

试试

onclick="javascript:$('#form').onSubmit(); return false;"

但我从未使用过它,所以我不知道它是否会起作用。您也可以查看here 的解决方案,因为这听起来与您想要完成的完全一样。

【讨论】:

  • unobtrusive-ajax.js 监听表单提交事件——所以只需调用form.submit应该触发 Ajax 脚本。 ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js
  • @McGarnagle,它并不总是有效。在视图内部,一个 意义上的 form.submit() 调用将起作用,但如果您在 JS 文件中执行 form.submit() 并以 unobtrusive-ajax.js 赢得的表单为目标'不触发工作。
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 2016-03-06
  • 1970-01-01
  • 2014-08-12
  • 2017-08-29
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
相关资源
最近更新 更多