2

コンボボックスの選択した値に応じて、フォーム内のいくつかの入力要素を更新したいと考えています。コンボボックスにはList<Person>、コントローラーから ViewBag を介して渡される が取り込まれます。

@Html.DropDownListFor(x => x.Person, new SelectList(ViewBag.Persons, "Id", "Name"), "Choose", new { id = "comboBox" })

今、Ajax リクエストを実行せずに要素を更新できるかどうか疑問に思っています。

$(function () {
    $('#comboBox').change(function () {
        var person = this.options[this.selectedIndex];
        document.getElementById("Age").value = person.Age; // fault!
    });
});

つまり、.Net オブジェクトを JavaScript に渡す方法はありますか? 多分追加のライブラリで?SelectListまたは、コンボボックスの を作成すると、すべての情報が失われますか?

4

1 に答える 1

1

personですHTMLOptionElementAgeプロパティはありません。textおよびvalueプロパティにアクセスできます。

document.getElementById("Age").value = person.value;

ページに Person オブジェクトの Javascript 配列を挿入すると、選択Personした ID を取得Ageし、必要に応じてそのプロパティを使用できます。

<script type="text/javascript">
var people = [{"id": 1, "name": "foo", "age": 10}, {"id": 2, "name": "bar", "age": 20}, {"id": 3, "name": "baz", "age": 30}];

function getPerson(id) {
    for(var i=0, max = people.length;i<max;i++) {
        if(people[i].id === id) {
            return people[i];
        }
    }
    return null;
}
</script>

于 2013-02-06T22:38:46.857 に答える