从存储库填充的下拉列表

时间:2011-09-23 20:29:35

标签: asp.net-mvc-3 razor repository html.dropdownlistfor

我有一个来自控制器上此代码的MVC3下拉列表。

private SelectList progCodesList = new SelectList(new[] { "Description", "Requirements", "Development", "Testing", "Documentation" });

如何填充存储库中的字段,以动态构建下拉列表? 谢谢。

2 个答案:

答案 0 :(得分:1)

假设您在数据库表中有progCodes,其中progCode包含文本,progCodeId具有唯一ID,那么您可以将表读入SelectListItem列表,如下所示:

private DbContext _db = new DbContext();

var progCodesList = _db.progCodes.Select(x => new SelectListIem()
    {
        Text = x.progCode,
        value = x.progCodeId
    }).ToList();

然后,您可以使用强类型模型或使用ViewBag将此List<SelectListItem>传递给您的视图。

答案 1 :(得分:0)

您需要使用以下内容将progCodesList传递给控制器​​方法中的ViewBag:

ViewBag.ProgCodeId = progCodesList;

然后在您看来,您需要填写下拉列表:

    <div class="editor-label">
        @Html.LabelFor(model => model.ProgCodeId, "ProgCode")
    </div>
    <div class="editor-field">
        @Html.DropDownList("ProgCodeId", String.Empty)
        @Html.ValidationMessageFor(model => model.ProgCodeId)
    </div>