DropDownList值到DataType.Date模型(ASP.NET MVC 4)

时间:2013-08-02 14:13:19

标签: asp.net asp.net-mvc-4 model html-select

有一段时间我现在试着解决这个小问题。完成的研究只让我感到困惑,有些尝试没有用。

所以,如果你认为你可以帮我减轻痛苦,我将非常感激!

我是ASP.NET MVC4移动应用程序的新手,我创建了一个简单的注册页面,其中只有一些细节,其中一个是出生日期,我更喜欢将其作为一组下拉列表而不是datepicker(就像手机一样,我希望它简单:))。

以下是在我的视图页面中填充下拉列表的一些代码:

<fieldset data-role="controlgroup" data-type="horizontal">
        <legend>D.O.B</legend>
            @Html.DropDownList("Day", Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "Day")
            @Html.DropDownList("Month", Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i)}), "Month")
            @Html.DropDownList("Year", Enumerable.Range(1900, 114).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "Year")
</fieldset>

我希望能够将这里的值“映射”到我的Register模型,现在看起来像这样:

[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }

任何帮助或直接回答都会非常感激。如果您需要更多信息,请随时询问。非常感谢你。

此致

1 个答案:

答案 0 :(得分:10)

而不是模型中的DateTime,您可以有三个整数

        public int Day { get; set; }
        public int Month { get; set; }
        public int Year { get; set; }

在你看来你会做

        @Html.DropDownListFor( model => model.Day, Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "Day")
        @Html.DropDownListFor( model => model.Month, Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i)}), "Month")
        @Html.DropDownListFor( model => model.Year,  Enumerable.Range(1900, 114).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString()}), "Year")

进入控制器后,您可以使用这3个整数创建日期时间并将其存储在数据库中

DateTime date1 = new DateTime(year, month, day);

如果您需要有关MVC的表单和模型的更多指导,我建议您阅读这篇ASP.NET MVC指南 - 它非常全面:

http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-helpers,-forms-and-validation