私は次のようにアプリケーションにViewModelを持っています:
public class ItemViewModel {
public string Name { get; set; }
public string SelectedType { get; set; }
public IEnumerable<Type> Types { get; set; }
public string SelectedSubtype { get; set; }
public IEnumerable<Subtype> Subtypes { get; set; }
}
これらのプロパティを公開するビューを作成しました。
@Html.TextBoxFor(m => m.Name)
@Html.DropDownListFor(m => m.SelectedType,
new SelectList(Model.Types, "ID", "Description"),
"Select a type")
@Html.DropDownListFor(m => m.SelectedSubtype,
new SelectList(Model.Subtypes, "ID", "Description"),
"Select a subtype")
サブタイプのドロップダウンリストを更新する場合は、新しいオプションを生成するために多くのDOMコードを作成する必要があります。
$('#SelectedType').change(function() {
$.get('/json/GetSubtypesFromType', { 'type': $(this).val() }, function(result) {
var options = '';
for (var count = 0; count < result.length; count++) {
options += "<option value='" + result[count].ID + "'>" + result[count].Description + "</option>";
}
$('#SelectedSubtype').html(options);
});
});
新しいオプションを自分に列挙可能なサブタイプにバインドする方法はありますか?ViewModel
代わりに、オプションを生成するためにこのコードを記述してください。フォームを投稿するときに新しい列挙型を取得する必要がありますが、新しい値をViewModel
コレクションにバインドしたいと思います。