在MVC中设置数据库驱动的DropDownListFor的值

时间:2014-09-30 14:48:29

标签: c# asp.net-mvc dapper

已经有很多关于此问题的问题,我已经看了很多,但我仍然无法弄清楚我在这里做错了什么。我可以使用下拉列表来填充选择值而不会出现任何问题,但是从数据库中设置列表的值是不行的。

基本上,页面上多次使用相同的选择列表,并且有一个单独的模型变量,用于跟踪每个实例的值。以下是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。但是,尝试使用该ID设置dropdownlistfor的值无效。例如,如果uom_id58,其中显示了"Roll"的相应描述,而不是默认为滚动dropdownlistfor而是显示列表中的第一个元素(上面添加的空元素。)

对我在这里做错了什么的想法?

1 个答案:

答案 0 :(得分: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