-1

我正在将 VB.NET 与 MVC 3 应用程序一起使用。我正在尝试渲染多年的下拉列表。当我有数据库时,它显示了我用特定年份选择的对象。我尝试了以下代码

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 它只是加载带有年份条目的下拉列表,就像它在数据库中的年份表中一样。假设年份列表是从 1992 年到 2013 年。并且我的对象的年份是 1995 年,然后预期是,在渲染数据时,下拉菜单应该选择 1995 年渲染。

4

1 回答 1

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 属性与变量进行比较,或将其传递给方法确定是否应将该特定项目标记为已选中。

于 2013-07-03T03:05:56.733 回答