剃刀形式与下拉列表

时间:2016-03-14 19:06:22

标签: asp.net html5 razor

帮助我了解如何构建它。 INet上的每个人和每个例子似乎都认为Razor v3 asp.net表单页面的唯一目的是利用DropDownList没有其他目的,只是在没有任何其他上下文的情况下在页面上显示下拉列表。

我正在做的是构建一个数据输入页面,使用户能够在数据库中创建一个Item ... think pencil,socks或cars ...的记录。项目的两个但不是唯一的属性是1)它的订单数量{1,2,3,...}和......这是我的麻烦开始的地方... 2)它的度量单位,UOM, {每个,案例,重量,......}

我有一个页面,其中包含Item的模型。这很好用。现在我正在尝试将页面上的UOM字段从TextBoxFor()更改为DropDownList()。

如何使用基于UOMModel的谨慎的选项列表填充下拉列表,其中页面基于ItemModel?

1 个答案:

答案 0 :(得分:3)

正如@Brian Mains在评论中所说,您需要将数据转换为SelectList类,以便将其与DropDownList一起使用。你可以这样做:

    public SelectList GetSelectList(List<UOMModel> model)
    {

        var selectListItem = new List<SelectListItem>();

        foreach (var item in model)
        {
            selectListItem.Add(new SelectListItem { Value = item.Value, Text = item.Text});
        }

        return new SelectList(selectListItem, "Value", "Text");
    }

然后使用ViewBag将其传递给您的视图:

//Action
ViewBag.UOMList = GetSelectList(UOMList);

//View
@Html.DropDownList("UOM", ViewBag.UOMList as SelectList, new { })