У меня есть значение в БД, которое может быть NULL и вызывает у меня проблемы с Html.DropDownList. Код хранится в базе данных и в настоящее время правильно устанавливает выбранное значение.
<%= Html.DropDownList("dealerIds"
, new List<SelectListItem>(((List<Company.SPPC.MVC.DealerId>)ViewData["dealerIds"]).Select(i => new SelectListItem() { Value = i.Key, Text = i.Description }).ToList())
, new { tabloop = "", id = "ddlDealerIds" })%>
В контроллере я беру значения из файла XML и добавляю их в ViewData:
Dim dealerIdXmlFile As String = ConfigurationManager.AppSettings("DealerIdXmlFile").ToString()
Using reader As System.IO.FileStream = System.IO.File.OpenRead(dealerIdXmlFile)
Dim xmlSerializer As New System.Xml.Serialization.XmlSerializer(GetType(DealerIdModel))
Dim dealerIdList As DealerIdModel = xmlSerializer.Deserialize(reader)
Dim dealerIds As New List(Of DealerId)
For Each x As DealerId In dealerIdList
dealerIds.Add(x)
Next
ViewData("dealerIds") = dealerIds
End Using
Кроме того, привязка явно задается в представлении:
$("#ddlDealerIds").attr("data-bind", "value: DealerId");
Выпуск состоит из двух частей:
(1.) Я хочу добавить «Идентификатор не выбран», который является значением по умолчанию и будет сохраняться как NULL. Мне удалось получить значение по умолчанию в списке, добавив его в HTML.DropDownList (..., «Идентификатор не выбран»), но когда я это сделаю, выбранное значение всегда будет значением по умолчанию, даже если в записи есть действующий код.
Я мог бы также добавить его в свой список XML, но тогда значение NULL не соответствует записи XML:
DealerId key = "" Desc="No ID Selected" ....
Кроме того, если я просматриваю запись с действительным идентификатором, а затем выбираю тот, который имеет значение NULL, раскрывающийся список остается выбранным для старого действительного идентификатора.
(2.) Даже если добавить значение по умолчанию, я все равно хочу, чтобы в раскрывающемся списке отображалось выбранное значение, если в базе данных есть допустимый код.
Я просмотрел несколько других сообщений здесь, и хотя это кажется обычным явлением, я не могу понять ни одно из опубликованных решений. Если я добавлю значение по умолчанию, я никогда не получу выбранное значение. Если я исправлюсь, чтобы установить выбранное значение, значения NULL не будут установлены по умолчанию, но сохранят последнее выбранное значение DealerId в раскрывающемся списке.
<%= Html.DropDownList("SomethingThatDoesntExist", new List<SelectListItem>(((List<Company.SPPC.....
- person Jon Spencer   schedule 21.05.2013