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イベントに必要なパラメーターを含めることを忘れないでください(私はそれを使用していないので、それらが何であるかはわかりません)。

私は本当にmsajaxjsライブラリを削除し、jQueryに固執することを検討します。ms js libsは、理由もなく複雑になりすぎる、ひどく書かれた邪魔なものでいっぱいです。jqueryだけを使用すると、作業がはるかに簡単になります。

于 2009-07-08T11:36:35.690 に答える