SelectList с MVC2 и пользовательской ViewModel

Я создал пользовательскую ViewModel, и одно из полей — SelectList/DropDownlist. Я хотел использовать EditorForModel для отображения ViewModel. Все поля работают, кроме SelectList. Я пробовал несколько разных вещей, и ничего не подошло. В одном сообщении я увидел, что EditorForModel не был «достаточно умен», чтобы создать DropDownList, и мне было интересно, правда ли это. EditorForModel намного проще в использовании и меньше печатает :)

Спасибо!

ОБНОВЛЕНИЕ

Я понял. В итоге я использовал UIHint("TemplateName") и в папке EditorTemplates создал файл .ascx, который вывел, как я и ожидал.


person Jamie R Rytlewski    schedule 24.08.2010    source источник


Ответы (1)


В вашей модели просмотра у вас должен быть IEnumerable<SelectListItem>

public IEnumerable<SelectListItem> Months { get; set; }

А в aspx нужно привязать так:

<%
    var htmlAttributes = new Dictionary<string, object> { { "data-autopostback", "true" } }; 
%>

<%:Html.DropDownList("Month", Model.Months, "-- All --", htmlAttributes)%>

Вы должны убедиться, что вы заполнили свойство Months, прежде чем передавать его в представление.

Дайте мне знать, если вам нужен код для заполнения свойства Months.

person SO User    schedule 24.08.2010
comment
Я думаю, вы упустили мою мысль. Я хотел попробовать использовать EditorForModel(), а это значит, что мне не пришлось бы использовать Html.DropDownList. Это то, что я пытаюсь понять, возможно. - person Jamie R Rytlewski; 24.08.2010
comment
если у вас есть IEnumerable‹SelectListItem› в ViewModel, как вы собираетесь вернуть выбранное значение? потому что в сообщении формы вы получаете строку [] с выбранными ключами для этого свойства - person Omu; 25.08.2010
comment
Omu, параметр должен называться Month в методе, используемом контроллером для получения выбранного значения. Однако я не тестировал его для раскрывающихся списков с множественным выбором. - person SO User; 25.08.2010