0

選択タグを MVC モデル変数に正確にマップする必要があります。考えられることはすべて試しましたが、コントローラーの post メソッドをチェックするたびに、ドロップダウンにバインドされていると思われる変数が null を返します。

意見:

<script type="text/javascript">
var counter = 1;
$('#btnAddLocation').click(function (e) {
    e.preventDefault();
    $("#tblAddLocation").find('tbody')
            .append($('<tr>')
                .append($('<td>')
                    .append($('@Html.LabelFor(m => m.Location)')
                    )
                )
                .append($('<td>')
                    .append($('<select name=Location id=Location' + counter++ + ' class=gradientTextbox>')
                    )
                )
                .append($('<td>')
                    .append($('@Html.LabelFor(m => m.Description)')
                    )
                )
                .append($('<td>')
                    .append($('@Html.EditorFor(m => m.Description)')
                    )
                )
            );

    $.getJSON("/Locations/GetAllLocations", function (data) {
        var items = "<option selected></option>";
        $.each(data, function (i, item) {
            items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
        });

        $("#Location" + (counter - 1)).html(items);
    });
});
</script>

コントローラ:

[HttpPost]
    public ActionResult ActionName(MyModel model, List<string> Location, List<string> Description) {
        return Json(new { success = true });
    }

コントローラー コードの Description 変数は正常に機能しますが、Location のリストは正しい数を返しますが、すべての項目が null です。

この問題を処理する方法について何か提案はありますか?

4

2 に答える 2

0

バインディングが機能するにLocationは、値である必要がありstringます。すべての<option>'s を通過するのではなく、現在の 's を通過します。selectedvalue

[HttpPost]
public ActionResult ActionName(MyModel model, string Location, List<string> Description) {
    return Json(new { success = true });
}
于 2012-09-09T02:27:00.223 に答える