如果我们在MVC的下拉列表中将数字绑定为项目,如何将项目显示为月份名称

本文关键字:项目 显示 绑定 MVC 我们 下拉列表 数字 如果 | 更新日期: 2023-09-27 18:07:04

我有下拉列表

@Html.DropDownListFor(x => x.SelectedMonth,Model.getMonths(),  new { @id = "ddlMonth"})

现在,我想在数据库"week_calendar"表的下拉列表中显示月份名称,为此我编写了linq查询,如

public SelectList getMonths()
{
    var monthslist = (from week in res.WEEK_CALENDER where week.WEEK_START_DT.Month <= DateTime.Now.Month select new { week.WEEK_START_DT.Month }).Distinct().AsEnumerable().Select(m => new SelectListItem() { Text =m.Month.ToString(), Value = m.Month.ToString() });
    return new SelectList(monthslist, "Value", "Text", month_num); ;
}

但是这里的下拉菜单将只显示月份数字,但我想显示基于月份数字的月份名称。

如果我们在MVC的下拉列表中将数字绑定为项目,如何将项目显示为月份名称

你也可以这样试试

public SelectList getMonths()
{
    var monthslist = (from week in res.WEEK_CALENDER where week.WEEK_START_DT.Month <= DateTime.Now.Month select new { week.WEEK_START_DT.Month }).Distinct().AsEnumerable().Select(m => new SelectListItem() { Text =(convert.ToDateTime(2000,m,1)).ToString("MMMM"), Value = (convert.ToDateTime(2000,m,1)).ToString("MMMM") });
    return new SelectList(monthslist, "Value", "Text", month_num); ;
}

试试这个

让我们试试

短名

月,例如Jun

Text = m.ToString("MMM")

全名为月,例如June

Text = m.ToString("MMMM")

而不是
Text = m.Month.ToString()

试试这个:

public SelectList getMonths()
{
    var monthslist = (from week in res.WEEK_CALENDER where week.WEEK_START_DT.Month <= DateTime.Now.Month select new { week.WEEK_START_DT.Month }).Distinct().AsEnumerable().Select(m => new SelectListItem() { Text =m.Month.Value.ToString("MMMM"), Value = m.Month.Value.ToString("MMMM") });
    return new SelectList(monthslist, "Value", "Text", month_num); ;
}

Do

Text = m.ToString("MMMM")

Text = m.Month.ToString()

另一个替代

var data = from i in Enumerable.Range(0, 12)
                  let now = DateTime.Now.AddMonths(i)
                  select new
                  {
                       MonthLabel = now.ToString("MMMM"),
                       Month = now.Month
                  };
获取月份名称