1

私は次のようにアプリケーションに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コレクションにバインドしたいと思います。

4

1 に答える 1

0

観察:あなたはAJAXで値を取得していて、DropDownListヘルパーに新しい値を追加したいと思っています。

提案1: カスタムAjaxドロップダウンリストヘルパーを作成します。

http://www.codeproject.com/Articles/421640/Creating-a-custom-AJAX-Helperでこの記事を読んでください

別の良い参照@Ajax.DropDownListと同等のものを作成する方法は?

特に価値のある参照 http://www.mikeyd.com.au/2009/08/22/dynamically-populate-a-selectdrop-down-list-using-aspnet-mvc-jquery-and-json/

提案2: 部分的なアクションを使用してドロップダウンリストを作成します@Html.Action("{Action}", {Controller}", new { id = {param})

またはjqueryasから$('#dropdowndiv').load('/{Controller}/{Action}')、アクションパーシャルは最初にアクションメソッドを呼び出し、次にパーシャルビューをレンダリングします。これは、選択リストをその場で動的に作成する場合に最適です。

于 2013-01-16T20:15:07.853 に答える