2014-09-30 19 views
0

關於這個問題已經有很多問題了,我已經瀏覽了其中的很多問題,但我仍然無法弄清楚我在做什麼錯誤這裏。我可以有一個下拉列表來填充選擇值,沒有任何問題,但是從數據庫設置列表的值不起作用。在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_id58其具有"Roll"相應描述將被顯示,而不是默認到滾動dropdownlistfor,代替顯示在列表中(在上面添加的空元素。)

什麼任何想法第一元件我在這裏做錯了嗎?

回答

1

我不確定Model.hdr_base-uom的含義。你不需要它,但:

@Html.DropDownListFor(model => model.hdr_base_uom, new SelectList(Model.putupOptions, 
    "uom_id", "uom_description"), 
    new { disabled = "disabled", style = "width:13em" }) 

還要確保您設置"58"(或任何選擇的值應,字符串化),以hdr_base_uom場。

您的示例適用於我的原樣(帶或不帶Model.hdr_base-uom)(當然在現代瀏覽器中)。

Fiddle

+0

,該代碼爲你工作讓我嘗試用hdr_base_uom可變進一步嘗試一些。我不知道它爲什麼,但從數據庫設置hdr_base_uom根本無法工作。當我手動分配hdr_base_uom =「90」時,它工作正常。我嘗試將hdr_base_uom更改爲int,並且從數據庫獲取完美地工作。不過,我不知道爲什麼。如果您有解釋並可以更新您的答案,我會將其標記爲正確,因爲您已將我帶入解決方案的路徑。 – Ben 2014-10-01 15:57:26

+0

我希望我有一個解釋。在過去,我搜索甚至查看了[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

+0

你如何處理這個功能呢? – Ben 2014-10-01 18:34:39

相關問題