【发布时间】:2017-07-08 08:56:48
【问题描述】:
我是一名新的 c# 开发人员,我有一个下拉列表,其中填充了格式如下的字符串日期:“2017 年 7 月”。列表中最多可以有 12 个条目。
当用户选择日期时,我想将该选择传递给控制器方法,将其转换为 DateTime 格式,然后使用该日期进行进一步处理。
如何将用户选择传递给控制器,以便对其进行转换和使用?我在下面包含了注释掉的代码,以显示我想要如何进行转换。将日期发送给控制器是我的挑战。
我在这个网站上查看过类似的问题,它们似乎都过于复杂(可能是由于我的幼稚),但我希望有一个更简化的解决方案。
HTML查看代码
@Html.DropDownList("selectList", Model.ReverseMonthsLists())
查看型号代码
public IEnumerable<SelectListItem> ReverseMonthsLists()
{
var selectListItems = GetDates()
.Select(_ => _.ToString("MMM yyyy"))
.Select((dateString, index) => new SelectListItem
{ Selected = index == 0, Text = dateString, Value = dateString })
.ToList();
return selectListItems;
}
public static IEnumerable<DateTime> GetDates()
{
DateTime startDate = new DateTime(2017, 6, 1).Date;
var currentDate = DateTime.Now.Date;
int numberOfMonthsToShow = (currentDate.Year - startDate.Year) * 12 +
currentDate.Month - startDate.Month;
var dates = new List<DateTime>(numberOfMonthsToShow);
currentDate = currentDate.AddMonths(-1);
for (int i = 0; i < numberOfMonthsToShow; i++)
{
dates.Add(currentDate);
currentDate = currentDate.AddMonths(-1);
}
return dates;
}
控制器功能
public ActionResult Report_Performance()
{
//var newDate = DateTime.Parse(strDate); //<- Use newDate as parameter value into aVar to replace date at the end of the string
var aVar = Models.Reporting.ListingStatsReportingViewModel.GetStats(userCurrentService.CompanyId.Value, Models.Reporting.DateTimePeriod.Monthly, DateTime.Now.Date.AddMonths(-1));
return this.View(aVar);
}
【问题讨论】:
标签: javascript c# asp.net drop-down-menu