2012-05-05 154 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.是否有任何此代碼的變化可以給我像二月的價值?????? –