我有一个使用Ajax.BeginForm
创建的简单表单:
<% using (Ajax.BeginForm("Update", "Description", new { id = Model.Id },
new AjaxOptions
{
UpdateTargetId = "DescriptionDiv",
HttpMethod = "post"
},new {id ='AjaxForm' })) {%>
Description:
<%= Html.TextBox("Description", Model.Description) %><br />
<input type="submit" value="save" />
<% }%>
控制器已连接并返回更新DescriptionDiv
的部分视图。一切顺利。
现在,我希望能够提交此表单,而无需使用提交按钮(通过单击链接、图像或其他任何方式)。不幸的是,这个小的jQuery代码片段无法完成任务:
$('form#AjaxForm').submit();
它确实提交了表单,但是(我认为不足为奇地)是一个常规的后台提交,而不是Ajax提交。
为了简化起见,上述jQuery代码如下连接:
<a href="#" onclick="$('form#AjaxForm').submit(); return false;">submit</a>
这个表单的onsubmit事件使用了Sys.Mvc.AsyncForm.handleSubmit(),但是jQuery的submit似乎绕过了它。
PS. 我正在寻找针对这种特定方法的解决方案。我知道如何使用普通表单并使用AJAX+jQuery进行提交来实现相同的效果。但我对于这个特定的解决方案很感兴趣。
$('form#ajaxForm').submit();
可以在jQuery 1.4.4和MVC 3中使用,但我花了很长时间才发现你需要引用一些脚本文件,否则这将退回到常规的后台提交。在我的情况下,这些文件是:jquery.unobtrusive-ajax.(min.)js + MicrosoftAjax和MicrosoftMvcAjax。 - juhan_h