2009-10-18 5 views
8

国、州、およびメトロのドロップダウンリストが3つあります。 私は(AJAXのドロップダウンリストをカスケードなど)、その後メトロのDropDownList塗りつぶし私はjQueryを使ってやりたい。これらのプロセス seclectユーザーその後、ドロップダウンリストは、jQueryのを満たしたときに、いつサテを選択します。Asp.NetのJQueryでドロップダウンリストをバインドする

答えて

10

私はASP.NET MVCで記述しようとしていますが、ASP.NET Webサービスを作成するか、コードの中に同じようにいくつかのページメソッドを置くだけで同じ結果が得られます。サードパーティのソリューションでも、WCFでのJSONシリアライザも必要です。 MVCを使用して

、まず、の三のコントローラのアクション持たせる - のページを表示するには1を、国が静的になり、そして2は、それぞれの状態や地下鉄を取得するには:

public ActionResult Index() 
{ 
    ViewData["Countries"] = _countryRepository.GetList(); 
    return View(); 
} 

public ActionResult States(string countryCode) 
{ 
    var states = _stateRepository.GetList(countryCode); 
    return Json(states); 
} 

public ActionResult Metros(string countryCode, string state) 
{ 
    var metros = _metroRepository.GetList(countryCode, state); 
    return Json(metros); 
} 

ビューでは、次の3つを持っていますDropDownLists、一つはViewDataを[「国」]オブジェクトにバインドされ、それは国の名前だと言う、あなたはこのようなAjaxの呼び出しでのjQueryでの状態を取得することができます:

$('#Countries').change(function() { 
    var val = $(this).val(); 
    $states = $('#States'); 
    $.ajax({ 
     url: '<%= Url.Action('States') %>', 
     dataType: 'json', 
     data: { countryCode: val }, 
     success: function(states) { 
      $.each(states, function(i, state) { 
       $states.append('<option value="' + state.Abbr+ '">' + state.Name + '</option>'); 
      }); 
     }, 
     error: function() { 
      alert('Failed to retrieve states.'); 
     } 
    }); 
}); 

大都市は、ドロップダウンを類推満たされることでしょう、国と州の選択の両方をサーバーに渡します。 dはメトロエリアの配列を持つJSONオブジェクトを取得します。

私はリポジトリの実装の詳細を省いただけで、サーバ上の結果変数を何らかの形で状態/メトロエリアのコレクションで埋めています。また、StateクラスにはAbbr(例: 'CA')と名前(カリフォルニアなど)の2つのプロパティがあると仮定しました。

私はそれがあなたを何らかの形で助け、少なくとも何とかあなたを解決策に導くことを願っています。

+1

大変ありがとうございました。 はオプション値の前に<を付ける必要がありました.... – Michel

+0

ああ、気付かなかった!ありがとう、私は私の答えを編集しました。 –

+0

'json'を解析して' List 'のようなものを返さない場合、私は' states.d'を使う必要がありました。そうでなければ、プロパティは常に定義されていませんでした。 – atconway