我想添加一个 dropdoenlist 几个月。我想要选择像一月/二月这样的值..我创建了一个像这样的操作:
public DropDownList GetMyMonthList()
{
DropDownList MyddlMonthList = new DropDownList();
DateTime month = Convert.ToDateTime("1/1/2000");
for (int i = 0; i < 12; i++)
{
DateTime NextMont = month.AddMonths(i);
ListItem list = new ListItem();
list.Text = NextMont.ToString("MMMM");
list.Value = NextMont.Month.ToString();
MyddlMonthList.Items.Add(list);
}
return MyddlMonthList;
}
我称之为
ViewBag.months = pm.GetMyMonthList();
在我看来
@Html.DropDownListFor(model => model.rent_month,new SelectList(ViewBag.months as System.Collections.IEnumerable, "Text","value"),
"Select Month")
它给出错误值不能为空。 参数名称:items
我可能犯了一个愚蠢的错误。我对 ASP.NET MVC3 很陌生。请指出我的错误......提前致谢
最佳答案
从错误消息来看,发生的情况是从 DropDownList 到 IEnumerable 的转换因返回 null 而默默失败。我建议更改 GetMyMonthList 以返回 IEnumerable,然后将其直接传递到 SelectList 的构造函数中。
public IEnumerable<SelectListItem> GetMyMonthList()
{
var MyddlMonthList = new List<SelectListItem>();
DateTime month = Convert.ToDateTime("1/1/2000");
for (int i = 0; i < 12; i++)
{
DateTime NextMont = month.AddMonths(i);
var list = new SelectListItem();
list.Text = NextMont.ToString("MMMM");
list.Value = NextMont.ToString("MMMM");
MyddlMonthList.Add(list);
}
return MyddlMonthList;
}
编辑
您还可以从 CultureInfo 获取月份名称。
public IEnumerable<SelectListItem> GetMyMonthList()
{
return CultureInfo.CurrentCulture.DateTimeFormat.MonthNames
.Select(m => new SelectListItem() { Text = m, Value = m });
}
关于.net - Razor 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464610/