2012-05-05 2 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; 

    } 

и я назвал его

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. просьба сообщить мне мою ошибку .... спасибо заранее

ответ

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; 
} 

EDIT

Вы также можете получить названия месяцев от CultureInfo.

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

благодаря его работе. но какими будут данные выбранного списка после выбора? –

+0

Извините, вы можете перефразировать? Я не понимаю ... – McGarnagle

+0

это дает значение, как для февраля, это дает 2. есть ли какие-либо изменения этого кода, могут дать мне значение, как февраль ?????? –

Смежные вопросы