2012-05-05 66 views
2

我想补充一个dropdoenlist几个月。我想选择值在1月/ 2 ..我已经创建了这样一个动作:剃刀的DropDownList

 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") 

提示错误值不能为空。 参数名称:项目

月份我做一个愚蠢的错误。我在asp.net mvc3中很新。请指出我我的错误....在此先感谢

回答

2

由错误信息来看,正在发生的事情是,从的DropDownList投给的IEnumerable通过返回一个空默默地失败。我建议更改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 }); 
} 
+0

由于其工作。但选择后选择列表的数据会是什么? –

+0

对不起,你能改说吗?我不明白... – McGarnagle

+0

它给出了价值像二月它给出2.是否有任何此代码的变化可以给我像二月的价值?????? –