2013-02-06 43 views
2

根據選擇的組合框的值,我想更新表單中的某些輸入元素。組合框填充它通過ViewBag從控制器通過了List<Person>在沒有Ajax的情況下使用Javascript中的C#對象的屬性更新輸入元素?

@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來釋放所有信息?

+1

編碼整個對象作爲[JSON](http://json.org/),然後打印其插入js代碼。 – bfavaretto

回答

1

personHTMLOptionElement。它沒有Age屬性。您可以訪問textvalue屬性。

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

插入Person對象的Javascript數組在你的頁面,那麼你可以得到選擇Person憑身份證,並根據需要從它使用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> 

+0

感謝您的回覆!你能更具體地說明你的意思是什麼插入一個Javascript數組到我的頁面?何時何地我應該這樣做? – core

+0

@Rico - 我添加了一些示例代碼。這只是給你一個想法,如何在JavaScript中聲明一個人物對象的數組,以及通過id來查找某個人的功能。你將不得不適應你的情況。這組人在全球範圍內。您可能想在腳本塊的開頭執行此操作。 – DaveB

相關問題