除非你有一個真正的需要來填充選擇列表的客戶端,你最好把你的價值觀的SelectList直入控制器和使用ViewBag.MarketSegmentId
屬性:
@Html.DropDownListFor(model => model.MarketSegmentID)
甚至只是
@Html.DropDownList("MarketSegmentID")
在控制器中,您將有這樣的事情(發生變化,以適應自己的數據):
ViewBag.MarketSegmentID = new SelectList(someDataList, "ValueProperty", "NameProperty");
someDataList
可以是任何集合(例如,數據庫表,列表等)。 「ValueProperty」是數據中包含要存儲的值的屬性名稱(通常是一個int值)。 「NameProperty」是數據中包含要在每個項目上顯示的文本的屬性名稱。如果SelectList
構造它將只使用元素沒有指定屬性名
List<int> ints = new List<int>();
for (int i = 0; i < 100; i++)
{
ints.Add(i);
}
ViewBag.MarketSegmentID = new SelectList(ints);
:
假設你想要的整數的簡單列表,按順序產生,你可以在一個循環中這樣將它們添加在顯示和值的集合中。
MVC將自動在與模型屬性同名的ViewBag
屬性中查找SelectList
。例如Model.MarketSegmentID
被認爲是所選擇的價值和ViewBag.MarketSegmentID
假定持有匹配SelectList
這也將填充從在顯示頁面視圖模型當前的選擇,並從選擇更新你的回報視圖模型值名單。
如果您描述數據的類型,我可以更新它以顯示在控制器中填充SelectList的具體示例。
問:爲什麼你填充在jQuer中選擇列表而不是通過控制器中匹配的'ViewBag.MarketSegmentId'? –
...或使用ViewModel? –
@AndréFigueiredo:他有一個ViewModel,你的意思是擴展它嗎? DropDownLists不需要,因爲它們已經連接到ViewBag中查看(請參閱下面的答案)。 –