【问题标题】:Drop down selection in ASP.Net MVC 3ASP.Net MVC 3 中的下拉选择
【发布时间】:2013-12-10 07:33:22
【问题描述】:

我是 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

在控制器类中。

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

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

【问题讨论】:

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


    【解决方案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,选择的年份就是当前年份。

    【讨论】:

    • 我不想为这一年创建一个新课程。它来自一个常见的助手类。那么,我该怎么做呢?
    • 这不是一年。它是视图的视图模型。它应该包含您要在视图中显示的所有数据。年、月等
    • 就我而言,生日日期属性在视图模型中。因此,视图模型中不应包含年、月和日。对于回发,我创建了一个隐藏的生日日期。然后三个下拉值组合并发布到服务器。因此,年月日数据来自一个公共类并放置一个共享函数。感谢您的帮助。
    • 如果我理解正确,我建议你使用 jQuery ui 的日期选择器 (jqueryui.com/datepicker) 并在视图模型中有一个 DateTime 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多