2

我正在尝试使用 jQuery 提交我的 Ajax 表单。但是调用 submit() 函数会导致整个页面刷新。它应该只执行表单的 onSubmit 部分(返回false以使页面不刷新)。

<%Ajax.BeginForm("AllocateAndUpdateMech", 
  New With {.Controller = "Planning", 
            .Id = Model.Id}, 
            New AjaxOptions With {
                       .LoadingElementId = "loading", 
                       .UpdateTargetId = Model.Id & "_alloc"}, 
            New With {.id = "allocate_" & Model.Id & "_" & item.UserId}
)%>
<%Html.Hidden("mechId", item.UserId)%>
<a href="javascript:void(0);" onclick="$('#<%="allocate_" & Model.Id & "_" & item.UserId %>').submit();">Allocate: <%=item.UserName%></a>
<%Html.EndForm()%>
4

2 回答 2

5

如果您使用 HTML Ajax.BeginForm,您不能只提交表单,因为该表单以某种方式与 ASP.NET MVC Ajax 挂钩。

有3个解决方案:

最简单最好的方法

使用 jquery $.AJAX 提交表单

简单但奇怪的方式

在表单上放置一个提交按钮。将其设置为隐藏并通过jquery单击它。

困难,但你的问题的答案

我在某个地方看到它仍然可以完全按照您的描述进行,但这是一种看起来不太好的解决方法。

这是完成提交表单示例的方式

于 2009-07-08T12:00:44.347 回答
1

当您在表单上调用 submit() 时,它不会调用使用该 ajax 表单功能创建的 onSubmit 函数。您需要直接调用表单 onSubmit

例如$("#ViewCartPage form").onsubmit()或更好只是this.form.onsubmit()

不要忘记包含 Sys.Mvc.AsyncForm.handleSubmit 事件所需的任何参数(不确定它们是什么,因为我不使用它)。

我真的会考虑放弃 ms ajax js 库并坚持使用 jQuery。ms js 库充满了写得很糟糕的突兀的垃圾,它们只会无缘无故地让事情变得复杂。仅使用 jquery 就简单多了。

于 2009-07-08T11:36:35.690 回答