有一段时间我现在试着解决这个小问题。完成的研究只让我感到困惑,有些尝试没有用。
所以,如果你认为你可以帮我减轻痛苦,我将非常感激!
我是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; }
任何帮助或直接回答都会非常感激。如果您需要更多信息,请随时询问。非常感谢你。
此致
答案 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