0

私は2つのテーブルを持っています

1.国

  • ID
  • 国名

と他のテーブルは

2.状態

  • 州ID
  • 州名
  • 国ID

このコードを使用して、国のドロップダウンリストにデータを入力していますcitycontroller.cs

ViewBag.countries = new SelectList(db.Couns.OrderBy(c => c.CountryName).ToList(), "ID", "CountryName");

create.cshtml

 @Html.DropDownList("Select Country", ViewBag.countries as SelectList)

国のドロップダウンの選択に応じて州のドロップダウンを設定する機能が必要ですか?????

4

3 に答える 3

0

国が選択されたときに州をロードするためにjQuery ajaxを使用できます。

<script type="text/javascript">
 $(function(){
    $("#Country").change(function(){
      var states=""; 
      var countryId=$(this).val();
      $.getJSON("@Url.Action("GetStates","Home")/"+countryId,function(data){
           $.each(data,function(index,item){
              states+="<option value='"+item.ID+"'>"+item.StateName+"</option>";
           });
             $("#States").html(states);
      });

    });    
 });    

</script>

Countryが Country ドロップダウンStatesの ID であり、 が States ドロップダウンの ID であり、国 ID をパラメーターとして受け取り、州を JSON 形式で取得するアクション メソッドがあると仮定します。

public ActionResult GetStates(int id)
{
  var stateList=repo.GetStatesForCountry(id);
  return Json(stateList,JsonRequestBehaviour.AllowGet);
}

repo.GetStatesForCountry渡された国IDに基づいて州のリストを返すと仮定します。Stateその関数呼び出しを、クラス オブジェクトのリストを返すメソッド呼び出しに置き換えることができます。

提案:動的な ViewBag /ViewData アプローチを避けて、Dropdwon にデータを入力し、より厳密に型指定されたアプローチに切り替えようとします。これを行う方法の例を次に示します。

于 2012-08-08T13:50:59.110 に答える
0

状態のリストがクライアント マシンに既にダウンロードされている場合は、knockout.js を使用することをお勧めします。選択した国に関連する州のみをダウンロードしたい場合は、国が選択されたときにサーバーに AJAX 呼び出しを行い、success 関数を使用して州リストを作成する必要があります。

于 2012-08-08T13:44:35.553 に答える
0

Ajaxそのためには呼び出しを使用する必要があります。あなたの質問に似た質問に対して私が提供したこの回答をご覧になることをお勧めします。

于 2012-08-08T13:46:49.957 に答える