2009-10-26 4 views
0

Я новичок в MVC и C#. Я пытаюсь получить статический список для работы с элементом управления DropDownList таким образом, чтобы выбранное значение отображалось текущим значением модели из БД.MVC 1.0 DropDownList статические данные не работают

В контроллере, у меня есть:

ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, donor.Gender); 

По мнению:

Gender:<%=Html.DropDownList("Gender", (IEnumerable<SelectListItem>)ViewData["GenderList"]) %> 

В отладчике donor.Gender это "Мужской", но "Женский" визуализируется в представлении ,

Я прочитал несколько сообщений, связанных с select, но я не нашел тот, который применяется к статическому списку (например, где нет «значения» и «имени» для воспроизведения). Я, вероятно, делаю что-то глупое ...

ответ

0

Это может показаться глупым вопросом, но является donor.Gender строковое значение, и оно соответствует случаю с закодированными значениями, которые вы использовали EG 'M эля?

Причина, по которой я прошу, состоит в том, что это;

ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, "Male"); 

работает, но это;

ViewData["GenderList"] = new SelectList(new[] { "Female", "Male", "Unknown" }, "male"); 

возвращает ваш результат

+0

Хорошая мысль. Выключает donor.Gender - это символ в базе данных. Однако, пробовав это: ViewData ["Gender"] = new SelectList (новый [] {"Женский", "Мужской", "Неизвестный"}, donor.Gender.ToString()); все еще не приносит радости. Теперь это может быть связано с тем, что Model.Gender по-прежнему является символом - не уверен, что с этим делать. – dale

+0

вы всегда можете создать другое свойство в объекте Gender и вернуть правильную строку на основе значения char –

+0

извините, что я имел в виду донора –

0

Благодаря Si, вот окончательное решение, которое я придумал:

В контроллере, это:

ViewData["GenderList"] = repo.GetGenders(donor.Gender); 

В DonorRepository, это:

public SelectList GetGenders(string selected) { 
    SelectList genders = new SelectList(new[] { "Female ", "Male ", "Unknown" }, (selected == null ? null : selected.ToString().PadRight(7).ToCharArray())); 
    return (genders); 
} 

Тогда в представлении, именно это:

<%= Html.DropDownList("Gender", (IEnumerable<SelectListItem>)ViewData["GenderList"], "--Select--")%> 

Примечание: PadRight (7) равна спецификации Donor.Gender DB полукокса (7). Также обратите внимание на заполнение константного пробела SelectList «1234567» для каждого selectlistitem.

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