DropDownListFor в EditorTemplate не выбирает значение - PullRequest
50 голосов
/ 16 декабря 2009

У меня есть шаблон редактора для пользовательского объекта. В этом шаблоне редактора я использую несколько помощников DropDownListFor. В каждом из них я указываю уникальное свойство модели (с предварительно выбранным значением) и список выбора, содержащий все параметры выбора.

Пример:

<%=Html.DropDownListFor(m => m.DocumentCategoryType, Model.DocumentCategoryTypeList) %>

Я знаю, что значения параметров заполняются (из источника просмотра) и что моя Модель передается с правильным значением идентификатора (DocumentCategoryType).

Когда представление отображается, в моем раскрывающемся списке нет выбранного элемента, поэтому по умолчанию используется первое (невыбранное) значение.

У кого-нибудь есть идеи?

Спасибо.

Ответы [ 12 ]

0 голосов
/ 05 сентября 2010

Мне удалось решить ту же проблему, сказав следующее:

new SelectList(sections.Select(s => new { Text = s.SectionName, Value = s.SectionID.ToString() }), "Value", "Text")

Этот трюк конвертирует значение в строку. Я знаю, что это было упомянуто в предыдущих ответах, но я нашел свое решение немного чище :). Надеюсь, это поможет.

0 голосов
/ 02 февраля 2010
Model.DocumentCategoryTypeList

Это, вероятно, ваша проблема. В SelectListItems вы устанавливаете значение для вывода .ToString ()?

 var list = new List<SelectListItem>()
                           {
                               new SelectListItem()
                                   {
                                       Value = Category.Book.ToString(),
                                       Text = "Book"                                     
                                   },
                               new SelectListItem()
                                   {
                                       Value = Category.BitsAndPieces.ToString(),
                                       Text = "Bits And Pieces"                            },
                               new SelectListItem()
                                   {
                                       Value = Category.Envelope.ToString(),
                                       Text = "Envelopes"                              }
                           };

У меня работает после этого. Это просто должно быть в состоянии соответствовать значению от объекта

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