通过 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.dropdownlist 传递给 Actionlink?