我正在使用VB.NET和MVC 3应用程序。我试图渲染Dropdown多年。我在哪里有数据库,显示我的对象选择特定年份。我尝试了以下代码
Controller:
Dim _years As New List(Of Service.Year)
_years = _Svc.GetYears()
Dim _yearList As IEnumerable(Of SelectListItem) = From c In _years Select New SelectListItem() With {.Text = c.YearMember, .Value = c.YearMember, .Selected = True}
ViewData("Year") = _yearList
In View :
Select Year : <%: Html.DropDownList("Year", TryCast(ViewData("Year"), SelectList))%>
这显示在下拉列表中选择的最后一个值。如果我删除.Selected = True它只是加载Drop with with Years条目,因为它在数据库的Year表中。假设年份列表是从1992年到2013年。我的对象有一年说1995年然后预期的是,在呈现数据时,下拉列表应该在1995年的选择中呈现。
答案 0 :(得分:0)
将最后一项显示为选中的原因是因为您将每个项目的Selected标记设置为true,并且假设只能选择一个项目,则要渲染的最后一项是标记的项目如选中。
您必须执行类似
的操作Dim _years As New List(Of Service.Year)
_years = _Svc.GetYears()
Dim _yearList As IEnumerable(Of SelectListItem) = From c In _years Select New SelectListItem() With {.Text = c.YearMember, .Value = c.YearMember, .Selected = c.YearMember == AVariableHere}
ViewData("Year") = _yearList
我的VB语法可能有些偏差,但想法是你只为符合你想要的条件的一个项目设置Selected = true,方法是将每个项目的YearMember属性与变量进行比较,或者传递给它确定是否应将该特定项目标记为已选择的方法。