1

DropDownList「ステーション」コードを含む があります。

@Html.DropDownList("Station", null, new { id = "dd_custom"});

( SelectListItem のリスト) でDropDownList埋められます。ViewData["Station"]

私の目標は単純です: DropDownList CHANGES@ViewBag.CurrentStation (太字は、onchange が存在することは知っていますが、それを機能させることができないためです) の場合、選択したステーションと同じになるようにしたいのです。

私が試したこと:

  1. この Web サイトこの Web サイト、および他の多くの Web サイトを介した Javascript 。
  2. アヤックス

それでも、このドロップダウン リストをコントローラー (MVC4 テンプレート (インターネット アプリケーション) のベース コントローラー) とやり取りする方法がわかりません。

最も簡単な方法は、私の index.cshtml から HomeController.cs に対話することですが、その方法がわかりません。

誰かが助けることができますか?

ありがとう


編集: すべてのページのステーション コードが必要です。ユーザーはホームページのステーションのみを変更できますが、レポートを作成するには別のページのステーションが必要です。Application["VarName"] を使用するのと同じように、グローバル変数が答えになるかもしれませんが、それでも、私の DropDownList => C# Class とやり取りする方法がわかりません。

4

1 に答える 1

4

に保存するデータはViewDataViewBag1つのリクエストに対してのみ存在します。例のために言う。サーバーにリクエストを送信し、新しい値をに設定している場合にドロップダウンが変更された@ViewBag.CurrentStationが、それがなくなったため、次のリクエストでは使用できなくなった場合。

ドロップダウンが変更されたときにコントローラーアクションを呼び出したい場合は、jqueryを使用してajaxを介して呼び出すことができます。

ドロップダウンの選択した値をサーバーに送信するには、このスレッドを参照できます。

現在のステーションをユーザーに対する複数のリクエストに対して永続化する場合は、セッションを使用できます。

サーバ側

public class StationController: Controller
{
   public ActionResult SaveCurrentStation(int stationId)
   {
       Session["CurrentStation"] = stationId;

       return new EmptyResult();
   }
}

クライアント側

$("#dropdownId").change(function(){
   var selStationId = $(this).val();
   $.post("/Station/SaveCurrentStation", {stationId: selStationId });
});
于 2012-06-20T05:14:09.680 に答える