HTML.SelectListFor selectedValue никогда не устанавливается - PullRequest
1 голос
/ 26 июня 2011

У меня есть следующее частичное представление, которое отображает раскрывающийся список:

 @model MartinDog.Core.Models.Section
 @{
    @Html.DropDownListFor(x=>x.Name
                          , new SelectList(Model.Dock.DockTemplate.Columns, 
                              "Id", "FriendlyName", 
                               Model.DockTemplateColumn.Id.ToString())
                          , new { @id = "ddlb_dockTemplateColumns" + 
                               Model.Id.ToString()})    
 }

Я отображаю его на своей странице следующим образом:

@{Html.RenderPartial("_Admin_Page_DockTemplateColumnDropDown", Model);}

Частичное представление отображается один раз для каждого Section объекта.Объект Раздела, который я создал и редактируемый в диалоговом окне jquery (измените имя, порядок отображения, столбец шаблона док-станции и т. Д.)

На используемой мной тестовой странице это диалоговое окно Разделаотображается четыре раза (поскольку их четыре в моем родительском объекте).

Проблема: * Значение SelectedValue в SelectList для раскрывающегося списка никогда не устанавливается* - то есть правильный элемент в раскрывающемся списке никогда не выбирается, когда отображается диалоговое окно, и я не могу понять, почему.

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

Кто-нибудь знает, что я могу сделать?

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

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

Дох ... исправлено - полностью моя вина.

Я настроил свой html.dropdownlist вот так @ Html.DropDownListFor (х => x.Name,

Когда это должно было быть так: @ Html.DropDownListFor (х => x.DockTemplateColumn.Id,

Установка первого аргумента x => x.DockTemplateColumn.Id (который уникальным образом идентифицирует элементы в моем списке) вместо x.Name сразу же исправила проблему.

Просто подумал, что я опубликую это здесь на тот случай, если кто-то совершит ту же ошибку, что и я.

редактировать Нашел ответ здесь: C # mvc 3 с использованием списка выбора с выбранным значением в представлении

0 голосов
/ 26 июня 2011

Я делаю это:

В действии контроллера (отредактируйте, например):

ViewData["ProvinceID"] = new SelectList(dc.Provinces.OrderBy(p => p.NameAr), "ID", "NameAr", factory.ProvinceID);

и разметка:

<%: Html.DropDownList("ProvinceID") %>

Видите?так что это список фабрик с полем Province, и я хочу, чтобы вы заметили, что это 4-й параметр в конструкторе SelectList, я передал factory.ProvinceID, чтобы DropDownList знал, какая опция должна быть установлена.В противном случае DropDownList покажет значение по умолчанию (первое).

PS: ваша задача - перейти на синтаксис Razor;Я им не пользуюсь.

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

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