通过 ActionLink 提交 Ajax.BeginForm

Posted

技术标签:

【中文标题】通过 ActionLink 提交 Ajax.BeginForm【英文标题】:Submit Ajax.BeginForm via ActionLink 【发布时间】: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>

【问题讨论】:

为什么不坚持提交按钮? 这是一项要求,但我确实找到了解决方法,我正在使用链接触发提交按钮单击。我在页面上隐藏了提交按钮。 【参考方案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 赢得的表单为目标'不触发工作。

以上是关于通过 ActionLink 提交 Ajax.BeginForm的主要内容,如果未能解决你的问题,请参考以下文章

总结详细说说@Html.ActionLink()的用法

在MVC中使用ActionLink打开Modal并传参

将当前值的 html.dropdownlist 传递给 Actionlink?

使 html 链接 href 属性等于 Ajax.ActionLink

如何在 @Html.ActionLink 中添加图像

带有 mvc 核心的 Ajax.ActionLink 替代方案