2016-05-18 12 views
3

ASP.NET MVCプロジェクトでドロップダウンリストのonChangeイベントを使用しようとしていますが、動作していません。AJAXを使用しないASP.NET MVCのドロップダウンリストのonchangeイベント

ビューは、フォームを含む、このようになります。予想されるようにドロップダウンリスト内の項目を選択するときに上記のコードで

@using (Ajax.BeginForm("Action", "Controller", 
new AjaxOptions 
{ 
    HttpMethod = "POST", 
    UpdateTargetId = "pages", 
    InsertionMode = InsertionMode.Replace 
})) 
     { 
      @Html.DropDownListFor(m => m.SelectedFrom, Model.ChangeFrom, new { onChange = "this.form.submit();" })     
     } 

     <div id="pages"></div> 

、火災をONCHANGE。それはajaxを使用していませんが、単に "pages-Div"を更新/塗りつぶすのではなく、私を新しいページにリダイレクトしています。私はを削除場合

が、

...

のDropDownListとためのonChangeイベントは次のように、簡単な送信ボタンを追加します。

@using (Ajax.BeginForm("SelectedUser", "ReplaceName", 
new AjaxOptions 
{ 
    HttpMethod = "POST", 
    UpdateTargetId = "pages", 
    InsertionMode = InsertionMode.Replace 
})) 
     { 
      @Html.DropDownListFor(m => m.SelectedFrom, Model.ChangeFrom) 
      <input type="submit" value="GO" /> 
     } 

が、それはAjaxを使用してのみ再読み込みします」 pages-Div」を参照してください。

何か不足していますか?

よろしく、 クリス

答えて

0

あなたがform.submit()を行っているが、falseを返すされているので、アクションが完了するまで実行されているので、最初のシナリオは、新しいページにリダイレクトします。あなたは

{ onChange = "this.form.submit(); return false;" } 

に新しい

{ onChange = "this.form.submit();" } 

を変更する場合は、両方の呼び出しを行うために小さなjavascript関数を記述する必要があります。

しかし、私はあなたがAjaxフォームがあなたのためにやるDiv置換を取得しないため、あなたが望むとは思わない。あなたは自分でそれを配線しなければならないでしょう。

2番目のページは、Ajax.BeginFormが動作するため、ページに残ります。その入力は、送信しているAjaxフォームに関連付けられ、AjaxOptionsの値を使用してコールをインターセプトすることがわかります。

+0

ない私はあなたが何を意味するかを理解し、完全に確認してください。私はthis.form.submit()関数がの背後でトリガーされたものと同じだと考えました。 変更された場合、コントローラ内のメソッドをトリガするようにドロップダウンリストを設定したいので、これをどうすればAjaxにできますか? – ChrisRun

+0

フォームを送信したいのですか、コントローラーで何らかのランダムアクションを呼び出すだけですか? – Fran

+0

さて、ドロップダウンの値をコントローラメソッドに渡す必要があるので、フォームを送信したいと思います。しかし、私は、メソッドの結果をajaxを使ってpartialviewとして返し、関連するdiv要素だけを更新したい。 – ChrisRun

関連する問題