使用数据库中的两列填充下拉列表

时间:2013-05-08 11:37:42

标签: asp.net-mvc-3 html-helper html-select

我正在研究MVC3项目。

在我的控制器中,我已经有一个代码从Descr表中获取StockClass列。之后,我使用此列表填充ViewBag,以便从视图中检索它并填充下拉列表。

目前工作正常,但只显示Descr字段(显然)。我想要的是用以下格式的两个字段(CodeDescr)填充下拉列表:“code - descr”。

我尝试了几种方法,但我找不到正确编码@Html助手的方法。

在我的控制器中......

var oc = dba.StockClass.OrderBy(q => q.Code).ToList();
ViewBag.OrderClass = new SelectList(oc, "StockClassId", "Descr");

在我看来......

@Html.DropDownList("StockClassID", (SelectList)ViewBag.OrderClass)

你能帮我吗?

1 个答案:

答案 0 :(得分:3)

我不相信有一个HTML Helper会为你做这件事,但是你可以得到你想要的东西:

var oc = dba.StockClass
    .OrderBy(q => q.Code)
    .ToDictionary(q => q.StockClassId, q => q.Code + " - " + q.Descr);

ViewBag.OrderClass = new SelectList(oc, "Key", "Value");

这样做的好处是可以使用StockClassIdCodeDescr重构友好 - 如果重命名这些属性,则无法在不更新的情况下进行编译要匹配的代码。