最初のドロップダウンの変更イベントをリッスンし、選択された値を読み取り、2 番目のドロップダウンのコンテンツの JSON データを返すアクション メソッドに送信します。JSON を読み取り、2 番目のドロップダウンにロードします。
$(function(){
$("#CountryDropdDown").change(function(e){
var country=$(this).val();
$.getJSON("@Url.Action("States","Home")?id="+country,function(data){
var items="";
$.each(data,function(index,item){
items+="<option value='"+item.ID+"'>"+item.Name+"</option>";
});
$("#States").html(items);
});
});
});
Homecontroller に States というアクション メソッドがあり、ID を受け取り、JSON を以下の形式で返すと仮定します。
[
{ "ID": "1", "Name": "MI" },
{ "ID": "2", "Name": "NY" }
]
編集: コメントの質問に従って
このような状態エンティティのクラスがあると仮定します。
public class StateVM
{
public int ID { set;get;}
public string Name { set;get;}
}
アクション メソッドで、StateVM
クラスのリストを作成し、Json
メソッドを使用して、そこからJSONデータを作成します。
public AtionResult States(int id)
{
var stateList=GetStatesForCountry(id);
return Json(stateList,JsonRequestBehavior.AllowGet);
}
private List<StateVM> GetStatesForCountry(id);
{
List<StateVM> states=new List<StateVM>();
//Hard coding the items for demo.
// TO DO : Replace the below lines with code for reading
// your database and filling the list
states.Add(new StateVM { ID=1, Name="MI"});
states.Add(new StateVM { ID=2, Name="NY"});
return states;
}