SelectedItem не запоминается в SelectList в ASPNET.MVC - PullRequest
1 голос
/ 30 июля 2009

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

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

В контроллере:

var x = new[] { 1, 2,3,4,5,6,7,8,9,10,11,12,13,14,15 };

ViewData["Field"] = new SelectList(x, 13);

В поле зрения:

<%=Html.DropDownList("Field", (IEnumerable<SelectListItem>)ViewData["Field"])%>

Когда я отлаживаю и наблюдаю объект ViewData ["Field"], у него есть selectedValue, равное 13, и поэтому он должен достигать View, но игнорируется, поскольку все, что я вижу на странице, - это выпадающий список со значениями 1 до 15, но с 1 показом (ни один не выбран, поэтому показывает первый)

Это ошибка или я делаю что-то действительно глупое?

Спасибо

Graeme

Ответы [ 2 ]

4 голосов
/ 30 июля 2009

Кажется, я помню, что он на самом деле не использует свойство Selected элемента SelectList. У меня обычно один элемент ViewData будет списком выбора, а другой - выбранным значением.

Контроллер:

var x = new[] { 1, 2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
ViewData["Fields"] = new SelectList(x);
ViewData["Field"] = 13;

View

<%= Html.DropDownList("Field", (IEnumerable<SelectListItem>)ViewData["Fields"] ) %>
0 голосов
/ 20 декабря 2009

Это происходило со мной! Я часами выдергивал волосы, но в конце концов понял. В моем случае я создавал выпадающий список примерно так:

<%= Html.DropDownList("bookId", Model.ProductMenu, new { onchange = "goToBook();" })%>

И это не было печать выбранной опции. Но выпадающее меню рядом с ним работало нормально:

<%= Html.DropDownList("segmentIndex", Model.SegmentMenu, new { onchange = "goToSegment();" })%>

Они генерировались точно таким же образом в контроллере, и отладчик всегда отображал правильно выбранное значение при возвращении представления. Так какого чёрта?

Разница была в самом представлении. «bookId» в моем приложении является значением маршрута / строки запроса, а attributeIndex - нет. Просто изменив имя «bookId» в представлении на «bookIdBLAH», это исправили!

...