为MVC ASP.NET创建下拉列表

时间:2013-08-27 09:01:57

标签: asp.net-mvc asp.net-mvc-4 razor html-helper

我目前在创建下拉列表时遇到问题。在我的视图中,我需要一个标签和一个下拉列表,其中tableA中的标签和tableB中的下拉列表。 dropdownlist的值将基于tableA的值。请看下面的代码

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @foreach (var x in item.UserConfigDtls)
        {
            @Html.DisplayFor(modelItem => x.ListOfValue)<br/>
        }
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.UserConfigHdrID }) |
        @Html.ActionLink("Details", "Details", new { id=item.UserConfigHdrID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.UserConfigHdrID })
    </td>

</tr>
}

从上面的代码中,我可以成功显示一个带有相应值列表的名称。现在我的问题是我希望单个值集成为下拉列表而不是显示它们。我可以知道如何做到这一点,因为我对MVC ASP.NET很陌生。

2 个答案:

答案 0 :(得分:0)

尝试:

@Html.DropDownListFor(modelItem => x.ListOfValue, new SelectList(item.UserConfigDtls, "Id", "Name"), "Select")

答案 1 :(得分:0)

在控制器中将选择列表绑定到您的模型:

    public ActionResult Index()
    {
        YourType model = new YourType ();
        model.List = GetSelectList();
        return View(model);
    }

    [NonAction]
    public IEnumerable<SelectListItem> GetSelectList()
    {
        var items = //Your List Object
        return items.Select(name => new SelectListItem() {
                    Text = name.prop,
                    Value = name.prop2
               });
    }

然后在视图中您可以将列表绑定为:

@Html.DropDownListFor(m => Model.typeToStoreValue,Model.List)