0

モデルには 2 つの DropDownList 要素があります。

[DisplayName("Site")]
public List<KeyValuePair<int, string>> Site { get; set; }
public int SelectedSiteID { get; set; }
<%= Html.DropDownListFor(model => model.SelectedSiteID, new SelectList(Model.Site, "Key", "Value"))%>

[DisplayName("Data Center")]
public List<KeyValuePair<int, string>> DataCenter { get; set; }
public int SelectedDataCenterID { get; set; }
<%= Html.DropDownListFor(model => model.SelectedDataCenterID, new SelectList(Model.DataCenter, "Key", "Value"))%>

ユーザーが最初の選択を変更したときに、2 番目の DropDownList で ListItem のコレクションを変更しようとしています。

これは次の方法で可能だと思いますが、これが良い習慣であることを確認したかったのです。

  • jQuery を使用して、最初の DropDownList の変更イベントにバインドします。
  • 変更イベントに応答する場合 -- 新しく選択された値を使用して AJAX 要求をサーバーに送信します。
  • サーバーは、2 番目の DropDownList の ListItem オブジェクトのコレクションを表す JSON で応答します。
  • jQuery を使用して、返された JSON 要素が含まれるように、2 番目の DropDownList の選択を変更します。

これはすべて少し...非MVC3yのようです。これは私が求めていることを達成するための標準的な方法ですか、それとももっと明確な方法はありますか?

4

2 に答える 2

0

このシナリオでは Jquery を使用するのが最善だと思います。

最善の方法は、firstDropdown ボックスを Jquery 内の OnChange イベントにバインドし、$.ajax を使用してコントローラーの JSONresult からデータをロードすることです。そのデータが読み込まれたら、secondDropdown 内にデータを読み込みます。

これに関してコードのヘルプが必要な場合はお知らせください。

于 2012-10-31T20:07:31.613 に答える
0

jQuery Cascade Select プラグインを使用してこれを行います。プラグインは簡単で、車輪を再発明する必要はありません。 http://code.google.com/p/jquery-cascade/

于 2012-10-31T20:13:38.700 に答える