關於這個問題已經有很多問題了,我已經瀏覽了其中的很多問題,但我仍然無法弄清楚我在做什麼錯誤這裏。我可以有一個下拉列表來填充選擇值,沒有任何問題,但是從數據庫設置列表的值不起作用。在MVC中設置數據庫驅動的DropDownListFor的值
基本上在頁面上多次使用相同的選擇列表,並且有一個單獨的模型變量來跟蹤每個實例的值。下面是用於hdr_base_uom變量的例子:
模型:
public string hdr_base_uom { get; set; }
public List<UomOption> putupOptions { get; set; }
public class UomOption
{
public int uom_id { get; set; }
public string uom_description { get; set; }
}
填充列表:
public List<UomOption> GetPutupOptions()
{
try
{
using (IfxConnection con = new IfxConnection(WebConfigurationManager.AppSettings["IBMCONN"].ToString()))
{
con.Open();
List<UomOption> uomOptions= con.Query<UomOption>("select uom_id, initcap(uom_description) as uom_description " +
" from oe_unitom " +
" where uom_group = 1 order by uom_description").ToList();
con.Close();
uomOptions.Insert(0, new UomOption(){ uom_id = 0, uom_description = " "});
return uomOptions;
}
}
catch (Exception x)
{
throw x;
}
}
的視圖:
@Html.DropDownListFor(model => model.hdr_base_uom, new SelectList(Model.putupOptions,
"uom_id", "uom_description", Model.hdr_base_uom),
new { disabled = "disabled", style = "width:13em" })
如果我只顯示的值model.hdr_base_uom
在頁面上然後uom_id
設置爲該值riable出現了。然而,嘗試使用該ID來設置dropdownlistfor
的值沒有任何效果。例如,如果uom_id
是58
其具有"Roll"
相應描述將被顯示,而不是默認到滾動dropdownlistfor
,代替顯示在列表中(在上面添加的空元素。)
什麼任何想法第一元件我在這裏做錯了嗎?
,該代碼爲你工作讓我嘗試用hdr_base_uom可變進一步嘗試一些。我不知道它爲什麼,但從數據庫設置hdr_base_uom根本無法工作。當我手動分配hdr_base_uom =「90」時,它工作正常。我嘗試將hdr_base_uom更改爲int,並且從數據庫獲取完美地工作。不過,我不知道爲什麼。如果您有解釋並可以更新您的答案,我會將其標記爲正確,因爲您已將我帶入解決方案的路徑。 – Ben 2014-10-01 15:57:26
我希望我有一個解釋。在過去,我搜索甚至查看了[source](https://github.com/ASP-NET-MVC/aspnetwebstack/blob/0ee98f84b41b6bef6bde6945e2797de9dac7d48a/src/System.Web.Mvc/Html/SelectExtensions.cs# L335),但我無法完全放下手腳。這就是我編輯我的答案的原因。我猜在這些表達式樹和對象轉換之間的某處,它在translation_中得到_lost!正是由於這些怪癖,我傾向於遠離'DropDownListFor'現在一天。 – Mrchief 2014-10-01 17:10:59
你如何處理這個功能呢? – Ben 2014-10-01 18:34:39