У меня есть поле выбора пола (--Select--, Male, Female), и я заполняю это в своем контроллере. Когда страница загружается, я хочу, чтобы пол, выбранный в модели pm.Gender
, автоматически выбирался при загрузке страницы.
Значения из pm.Gender
возвращаются как:
- ""
- "M"
- "F"
Вид:
<%: Model.Gender %>
<%: Html.DropDownListFor(m => m.Gender, (IEnumerable<SelectListItem>)ViewData["gender"], new { @class = "span2" })%>
Контроллер:
gender = new[] { "Select", "Male", "Female" };
List<SelectListItem> genderselectList = new List<SelectListItem>();
foreach (string item in gender)
{
SelectListItem sli = new SelectListItem { Text = item, Value = item };
if (item.Trim().StartsWith(pm.Gender))
sli.Selected = true;
genderselectList.Add(sli);
}
ViewData["gender"] = genderselectList;
После отладки приложения я вижу, что genderselectList
содержит правильные данные с Selected = true
для правильного значения, которое должно быть выбрано. Но когда страница загружается, в раскрывающемся списке, который должен был быть сгенерирован с помощью Html.DropDownListFor
, ничего не выбрано.
Изменить: Не работает в любом браузере.
Кто-нибудь знает, что может вызвать эту проблему? Любая помощь будет оценена по достоинству.
Приветствия.
EDIT: (После реализации решения Kaf)
Хорошо, так это то, что я делаю после реализации решения Kaf.
Вид:
<%: Html.DropDownListFor(m => m.Gender, (SelectList)(ViewData["gender"]), new { @class = "span2" }) %>
Контроллер:
gender = new[] { "Select", "Male", "Female" };
List<SelectList> genderselectList = new List<SelectList>();
foreach (string item in gender)
{
SelectList sli;
if (item.Trim().StartsWith(pm.Gender))
sli = new SelectList(GetGender(), item, item, item);
else
sli = new SelectList(GetGender(), item, item);
//without selectedValue
genderselectList.Add(sli);
}
ViewData["gender"] = genderselectList;
Когда я это делаю, я получаю следующее исключение: Unable to cast object of type 'System.Collections.Generic.List`1[System.Web.Mvc.SelectList]' to type 'System.Web.Mvc.SelectList'.
Кто-нибудь знает, что я делаю неправильно?