Html.DropDownList не заполняет 'выбранный' в Razor - PullRequest
0 голосов
/ 06 января 2012

Этот код работал (правильно отражает текущий часовой пояс пользователя) в версии aspx.

<%= Html.DropDownList("User.TimeZone", AppHelper.GetUSTimeZones(Model.TimeZone))%>

При переключении на Razor я обнаружил, что визуализированный элемент управления не помещает часовой пояс пользователя в качестве выбранного элемента.

Я просмотрел этот вопрос и вижу, что другие сталкивались с такой же проблемой. Разве я не должен ожидать, что HtmlHelpers будет работать так же при переходе на Razor?

1 Ответ

1 голос
/ 07 января 2012

Для используемой перегрузки DropDownList метод принимает строку для имени поля и IEnumerable из SelectListItem.

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlist.aspx

Таким образом, ваш AppHelper.GetUSTimeZones (Model.TimeZone)) должен вернуть IEnumerable .

Чтобы сделать выбранную опцию, вы должны указать, что SelectListItem выбран. Так что-то вроде:

_timeZoneRepo.RetrieveAll().Select(t => new SelectListItem { Text = t.Name, Value = t.Id, Selected = TimeZone.Id == t.Id ? true : false });

Надеюсь, это поможет.

...