2016-06-14 5 views
0

にdropdown.onselectを接続するための正しい方法は何ですか。私はASP.net 4.5、MVCを使用していますサーバーのバックエンド

私はすべての通常のMVCものを行う方法を理解します。私のナビゲーションバーで

、私は、ユーザーが「場所」を変更することができます小さなドロップダウンを持っています。 ドロップダウンから新しい場所を選択したら、セッション変数を更新するように指示してから、それらのページを再読み込みする必要があります。私はこれを行うための3つの方法を考えることができ

  1. は、ドロップダウンにいくつかのJavaScriptをフック、専用コントローラにAJAX呼び出しを行います。
  2. 同じページにFORMSUBMITのいくつかの種類を行うと、何とかいつものコントローラでそれをキャッチ。 HTMLページ内の機能を記述する
  3. 使用かみそりは、(それがロジックを置くために、間違った場所になるので、間違ったようです)。この機能を実装するための簡単な方法だろう何

?私は場所がクリックされたときにこれを直ちに変更したい - 言い換えれば "提出する"ボタンはありません。

+0

パフォーマンスを向上させるには、オプション1が最適です。オプション3は機能しません - クライアント側のイベント(フォームの 'submit()'イベントのドロップダウンリストの '.change()'イベント)に対応する必要があり、剃刀はサーバサイドコード –

答えて

0

これは私がと答えてと答えた理由です。

次のように私は、ビューを書いた:

<div class="dropdown"> 
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown"> 
     @SessionHandler.UserSession.ValidFactories[SessionHandler.UserSession.SelectedFactoryIndex].Name 
      <span class="caret"></span> 
     </button> 
     <ul class="dropdown-menu"> 
     @for (var i = 0; i < SessionHandler.UserSession.ValidFactories.Count; i++) 
     {<li><a href = /Home/[email protected]>@SessionHandler.UserSession.ValidFactories[i].Name</a></li>} 
     </ul> 
</div> 

これは私がホームコントローラChangeFactoryアクション/関数のIDとドロップダウンのクリックを提出しています意味。

public ActionResult changeFactory(int id) 
    { 

     SessionHandler.UserSession.SelectedFactoryIndex = id; 

     return Redirect(Request.UrlReferrer.ToString()); 
    } 

セッションを変更してから、ユーザーを元の場所に戻します。とても早い。私はこれがブラウザーの "歴史"に押し進められるが、今はその罰金があることを知っている。あなたがそれらを持っている場合、他の解決策を投稿してください。

+0

です。他の誰も応答していないようだから、私の回答を答えにする。 – Worthy7

関連する問題