我是asp.net MVC 3的新手。我想创建每年,每月和每天的下拉列表。我创建了一个收集常用函数的帮助器类。见下文。
通用
Public Shared Function GetYearsList() As List(Of SelectListItem)
Dim items As New List(Of SelectListItem)
For i = -1 To 2500
Dim item As New SelectListItem
item.Text = Now.AddYears(i).Year.ToString()
item.Value = Now.AddYears(i).Year.ToString()
If i = Now.Year Then
item.Selected = True
End If
items.Add(item)
Next
Return items
End Function
在Controller类中。
Function Index() As ActionResult
ViewData("Year") = Command.GetYearsList()
ViewData("Month") = Command.GetMonthsList()
ViewData("Day") = Command.GetDaysList()
Return View()
End Function
在“查看”页面中。
@Html.DropDownList("Year", DirectCast(ViewData("Year"), List(Of SelectListItem)), New With {.onchange = "setDate();"})
但它没有选择当年。如何选择当前年份。否则有其他解决方案吗?谢谢大家。
答案 0 :(得分:1)
我在C#中显示你想要的东西。我想你可以轻松地将它重写为VB。
首先,为视图创建一个视图模型类。
public class SomeViewModel
{
public SomeViewModel()
{
this.Years = new List<int>();
for (int i = -1; i <= 2500; i++)
{
this.Years.Add(DateTime.Now.AddYears(i).Year);
}
this.SelectedYear = DateTime.Now.Year;
}
public int SelectedYear { set; get; }
public List<int> Years { set; get; }
}
它有一个属性包含年份,另一个属性包含所选年份。
其次,制作一个简单的控制器方法:
public ActionResult Index()
{
var model = new SomeViewModel();
return View(model);
}
在此之后,制作强类型视图:
@model YourAppNameSpace.ViewModels.SomeViewModel
...
@Html.DropDownListFor(model => model.SelectedYear, new SelectList(Model.Years))
它将生成一个包含年份的DropDownList,并且所选年份是当前年份。