除非你有一个真正的需要来填充选择列表的客户端,你最好把你的价值观的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中查看(请参阅下面的答案)。 –