2012-05-05 3 views
2

몇 달 동안 dropdoenlist를 추가하고 싶습니다.Razor DropDownList

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

그것이 오류를 제공

 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(); 

라고 : 내가 선택 값 월/2월처럼 .. 내가 이런 행동을 만들었습니다 싶어 값은 null 일 수 없습니다. 매개 변수 이름 : 항목

나는 어리석은 실수를하고 있을지도 모른다. 나는 asp.net mvc3에서 매우 새로운 것이다. .... 나에게 내 실수를 나타내는 오류 메시지가 판단 사전

답변

2

에 감사하십시오, 무엇이 일어나고있는 것은 를 IEnumerable-DropDownList로에서 캐스트가 널을 반환하여 자동으로 실패하고 있다는 점이다. 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 월 2 일에 대한 가치를 부여한다. 2.이 코드의 변경으로 인해 나에게 2 월과 같은 가치를 줄 수있다 ?????? –