已经有很多关于此问题的问题,我已经看了很多,但我仍然无法弄清楚我在这里做错了什么。我可以使用下拉列表来填充选择值而不会出现任何问题,但是从数据库中设置列表的值是不行的。
基本上,页面上多次使用相同的选择列表,并且有一个单独的模型变量,用于跟踪每个实例的值。以下是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
是58
,其中显示了"Roll"
的相应描述,而不是默认为滚动dropdownlistfor
而是显示列表中的第一个元素(上面添加的空元素。)
对我在这里做错了什么的想法?
答案 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
)(当然,在现代浏览器中)。