2012-05-05 25 views
2

私は数ヶ月間dropdoenlistを追加したいと思います。それがエラーを与えるRazor 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; 

    } 

と私は

@Html.DropDownListFor(model => model.rent_month,new SelectList(ViewBag.months   as  System.Collections.IEnumerable, "Text","value"), 
     "Select Month") 

私の見解では

ViewBag.months = pm.GetMyMonthList(); 

それを呼ばれる:私は1月/ 2月のような選択値が..私はこのようなアクションを作成しましたしたいです 値をnullにすることはできません。 パラメータ名:items

私は愚かな間違いをしている可能性があります。私は非常にasp.net mvc3で新しいです。 ....私は私の間違いを示すエラーメッセージから判断すると、事前

答えて

2

で感謝してください、何が起こっていることはIEnumerableをからのDropDownListからのキャストがnullを返すことで黙って失敗しているということです。 GetMyMonthListIEnumerable <に変更してから、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; 
} 

EDIT

またのCultureInfoから月名を取得することができます。

public IEnumerable<SelectListItem> GetMyMonthList() 
{ 
    return CultureInfo.CurrentCulture.DateTimeFormat.MonthNames 
     .Select(m => new SelectListItem() { Text = m, Value = m }); 
} 
+0

ありがとうございます。選択後の選択リストのデータはどのようになりますか? –

+0

申し訳ありませんが、あなたは言い換えることができますか?私は理解していない... – McGarnagle

+0

それは2月2日のような価値を与える2.このコードの変更は私に2月のような価値を与えることができます?????? –