在ASP.Net MVC 3中下拉选择

时间:2013-12-10 07:33:22

标签: asp.net asp.net-mvc-3 razor

我是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();"})

但它没有选择当年。如何选择当前年份。否则有其他解决方案吗?谢谢大家。

1 个答案:

答案 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,并且所选年份是当前年份。