我在DB中有一個值可以爲NULL,並導致我與Html.DropDownList有問題。該代碼存儲在數據庫中,並且當前正確設置了所選值。HTML.DropDownList默認值保存爲NULL,並仍然在選定的值上工作
<%= 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.)我想添加一個「No ID Selected」,這是默認值e並將存儲爲NULL。我可以通過將它添加到HTML.DropDownList(...,「No ID Selected」)來獲得默認值,但是當我這樣做時,選定的值始終是默認值,即使記錄有一個有效的代碼。
我還可以把它添加到我的XML名單,但隨後的NULL值不與XML記錄匹配:
DealerId key = "" Desc="No ID Selected" ....
另外,如果我查看與有效身份證件的記錄,然後拉起一個是NULL,下拉選擇保持選擇舊的有效ID。
(2.)即使添加默認值,我仍然希望下拉列表在數據庫中存在有效代碼時獲取所選值。
我已經看過這裏的一些其他帖子,雖然這似乎很常見,但我無法使任何發佈的解決方案正面或反面。如果我添加默認值,我沒有得到任何選定的值。如果我修復設置選定的值,則不會將NULL值設置爲默認值,但會將最後選擇的DealerId值保留在下拉列表中。
我做了一些下面的測試,發現這並不是錯誤......那麼這個第一個參數是什麼呢?我認爲這是設置選定值的對象? '<%= Html.DropDownList(「SomethingThatDoesntExist」,new List(((List