2009-07-16 11 views
0

ドロップダウン(ASP.NET、MVC、VB)で選択範囲を自動保存しようとしていますが、期待どおりに動作していません。送信ボタンとAJAXの動作が異なるthis.form.submit?

<AcceptVerbs(HttpVerbs.Post)> _ 
Function TestAction(ByVal id As Integer) As ActionResult 
    Return Content(id) 
End Function 

とHTML:: - スパンが「123」が移入され

<script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>'></script> 
<script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>'></script> 

<% Using Ajax.BeginForm("TestAction", New AjaxOptions With {.UpdateTargetId = "test"})%> 
<%=Html.Hidden("id", 123)%> 
<%=Html.DropDownList("actions", Nothing, New With {.onchange = "this.form.submit();"})%> 
<input type="submit" value="Submit" /> 
<span id="test"></span> 
<% End Using%> 

期待通りにボタンの作品を提出してくださいここでは、コントローラ内のダミーアクションがあります。もう一方のドロップダウンでは、 "123"だけで新しいページが開きます。なぜ "this.form.submit()"がSubmitボタンと同じことをしないのですか?送信ボタンをエミュレートするために別の呼び出しが必要ですか?

答えて

1

this.form.submitは、form.onsubmitイベントを実行しません。一方、送信ボタンを押すと、それが実行されます。これは、the HTML that Ajax.BeginForm generatesと組み合わせると、2つの動作が異なる理由が説明されています。あなたのイベントを作成する方法については、送信ボタンを押したのと同じことを行うリンク先の記事にHTMLを見て:

Sys.Mvc.AsyncForm.handleSubmit(
     this, 
     new Sys.UI.DomEvent(event), 
     { 
      insertionMode: Sys.Mvc.InsertionMode.replace, 
      updateTargetId: 'test' 
     }); 
0

を、私はこれが古いですけど、に新しい(より良い)方法がありますこれを行う。

javascriptを使用する代わりに、jQueryを使用します。ちょうどこの問題があったし、それは素晴らしい仕事をした。

this.form.submit() < ---- Javascriptを

$("form").submit() < ---- jQueryの

関連する問題