ASP.NET MVC DropDownList SelectedValue работает с действием Edit, но не с действием Create. - PullRequest
1 голос
/ 20 мая 2010

В моем контроллере есть следующий код (для редактирования и создания):

model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", 213);

«213» - это идентификатор для одной из страниц, просто использующий его для тестирования.

И это на мой взгляд (для редактирования и создания):

<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>
<%= this.Model.Templates.SelectedValue %>

Когда я перехожу к форме Создать, я вижу раскрывающийся список, но тег со значением = "213" не выбран . Я даже вывел SelectedValue, чтобы убедиться, что это 213 - и я вижу 213.
Когда я перехожу к форме редактирования, я вижу раскрывающийся список, и выбирается тег со значением = "213" .

В форме Создать ни один из тегов не имеет атрибута selected.
В форме редактирования тег со значением = "213" имеет атрибут "выбранный".

Я что-то упустил? Что может быть причиной этого? Кто-нибудь видел такое поведение раньше?

ОБНОВЛЕНИЕ: Изменение имени выпадающего списка заставляет его работать. Например, вместо

<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>

Я сделал

<%= this.Html.DropDownList("somedropdown", this.Model.Templates)%>

и это сработало. Хотя не уверен почему ...

1 Ответ

1 голос
/ 20 мая 2010

Это может произойти из-за того, что DataValueField является строковым объектом и может иметь там несоответствие типов.

Попробуйте что-то вроде этого:

model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", "213");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...