MVC 1.0 DropDownList статический выбор данных не работает - PullRequest
0 голосов
/ 26 октября 2009

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

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

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

По виду:

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

В отладчике donor.Gender имеет значение "Male", но в представлении отображается "Female".

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

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

Благодаря 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 для Char (7). Также обратите внимание на заполнение константы SelectList "1234567" для каждого элемента selectlist.

0 голосов
/ 26 октября 2009

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

Причина, по которой я спрашиваю, заключается в следующем;

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

работает удовольствие, но это;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...