2013-09-25 3 views
0

Я пытаюсь представить раскрывающийся с открытием часа офиса с выбранным значением (открытие часов), поступающими из базы данных, но это не выбор значения:DropDownListFor не выбирая значение из базы данных

Модели:

public class ScheduleViewModel 
{ 
    public int Id { get; set; } 
    public int OpenHour { get; set; } 
} 

DROPDOWNLIST все часы дня:

private IEnumerable<SelectListItem> ScheduleHoursDropDownList() 
{ 
    List<SelectListItem> hours = new List<SelectListItem>(); 

    for (int i = 0; i <= 23; i++) 
    { 
     hours.Add(new SelectListItem 
      { 
       Text = i.ToString("00"), 
       Value = i.ToString("00") 
      }); 
    } 

    return hours; 
} 

Вид:

@Html.DropDownListFor(m => m.Schedule[i].OpenHour, Model.ScheduleHours) 

У меня есть целое число 9 в базе данных, но оно не выбрано, когда я представляю раскрывающееся меню, почему?

Благодаря

ответ

2

Я целое число 9 в базе данных, но это не выбран, когда я представляю ниспадающее меню, то почему?

Потому что 9 и 09 являются 2 различными строками. Поэтому убедитесь, что у вас есть точное совпадение:

hours.Add(new SelectListItem 
{ 
    Text = i.ToString("00"), 
    Value = i.ToString(), 
}); 

Обратите внимание, что для Value имущества SelectListItem вы не должны претендуете формат 00 строки.

Также убедитесь, что действие контроллера, служащее этому представлению, эффективно устанавливает значение 9 в целое свойство на модель вашего просмотра.


UPDATE:

Он также может быть необходимо вызвать помощника, как это в представлении:

@Html.DropDownListFor(
    m => m.Schedule[i].OpenHour, 
    new SelectList(Model.ScheduleHours, "Value", "Text", Model.Schedule[i].OpenHour) 
) 
+0

Привет, но я уже пробовал это, но он все еще не работает, я получаю в выпадающем меню select и имеет значение Schedule [i] .OpenHour, но оно не выбрано :( – Patrick

+0

Попробуйте создать свой раскрывающийся список, как показано на рисунке: '@ Html.DropDownListFor (m => m.Schedule [i] .OpenHour, новый SelectList (Model.ScheduleHours,« Value »,« Text », Model.Schedule [i] .OpenHour)) '. –

+0

Отлично! Это работает! Большое спасибо Дарин;) пожалуйста, измените свой ответ, чтобы я мог установить его правильно. Благодарю. – Patrick

0

Который когда-либо значение вы хотите выбран, то добавьте свойство selected=true

hours.Add(new SelectListItem 
{ 
    Text = i.ToString("00"), 
    Value = i.ToString(), 
    Selected = true 
}); 

Значение выше будет выбрано при запуске страницы.

+0

Привет, спасибо, за вашу помощь. – Patrick

+0

Вы больше всего приветствуете :) – Nirmal

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