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

本文关键字:DropDownListFor 的值 数据库 MVC 设置 | 更新日期: 2023-09-27 18:25:02

SO上已经有很多关于这方面的问题,我已经看了很多,但仍然无法弄清楚我到底做错了什么。我可以在没有任何问题的情况下使用dropdownloadlist来填充选择值,但从数据库中设置列表的值是不起作用的。

基本上,相同的选择列表在页面上被多次使用,并且有一个单独的模型变量来跟踪每个实例的值。以下是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_id是具有要显示的"Roll"的相应描述的58,则dropdownlistfor不是默认为滚动,而是显示列表中的第一个元素(上面添加的空元素)

你觉得我在这里做错了什么吗?

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

我不知道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