2009-07-08 12 views
2

jQueryを使用してAjaxフォームを送信しようとしています。しかし、submit()関数を呼び出すと、ページ全体が更新されます。フォームのonSubmit部分(ページがリフレッシュされないようにfalseを返す)を実行するだけです。.NET MVC - フォーム提出により、onSubmit javascript実行の代わりにポストバックが発生する

<%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()%> 

答えて

5

HTML Ajax.BeginFormを使用している場合、フォームは何とか​​ASP.NET MVC Ajaxに接続されているため、フォームをコミットできません。

3つの解決策があります。

最も簡単で最良の方法

使用jqueryの$のアヤックスをフォーム

簡単ですが、奇妙な方法

をコミットするには、送信ボタンを入れてフォーム上にそれを非表示に設定し、jqueryでクリックします。

難しいが、あなたの質問

への答え私はそれをあなたがまだあなたが記述を正確に何ができるどこかを見てきましたが、それはそれは見栄えdidntの回避策でした。

これはどのように行われますかsubmit form sample

1

フォームでsubmit()を呼び出すと、そのajaxフォーム機能を使用して作成されたonSubmit関数は呼び出されません。あなたは、フォームを呼び出す必要がありますONSUBMIT直接

例えば$("#ViewCartPage form").onsubmit()か、単にthis.form.onsubmit()

いけないSys.Mvc.AsyncForm.handleSubmitイベント(彼らが何であるかわからないが必要とするすべてのパラメータを含めることを忘れ、より良いです私はそれを使用しない)。

私は本当にms ajax jsライブラリを削除し、jQueryを使用することを検討します。 ms js libsは、ひどく書かれた目立たないものでいっぱいです。 jqueryを使うだけで物事がはるかに簡単になります。

+0

submit()関数はすでにfalseを返します... ...? – Ropstah

+0

はそれを何に返しますか? – redsquare

+0

- Sys.Mvc ....関数はfalseを返します。 – Ropstah