我正在研究MVC3项目。
在我的控制器中,我已经有一个代码从Descr
表中获取StockClass
列。之后,我使用此列表填充ViewBag,以便从视图中检索它并填充下拉列表。
目前工作正常,但只显示Descr
字段(显然)。我想要的是用以下格式的两个字段(Code
和Descr
)填充下拉列表:“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)
你能帮我吗?
答案 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");
这样做的好处是可以使用StockClassId
,Code
和Descr
重构友好 - 如果重命名这些属性,则无法在不更新的情况下进行编译要匹配的代码。