【问题标题】:Razor form with dropdown list带有下拉列表的 Razor 表单
【发布时间】:2016-03-14 19:06:21
【问题描述】:

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

我正在做的是构建一个数据输入页面,使用户能够在数据库中创建一个项目的记录……想想铅笔、袜子或汽车……。一个项目的两个但不是唯一的属性是 1)它的订单数量 {1,2,3,...} 和...这是我的麻烦开始的地方... 2)它是计量单位,UOM, {每个,箱,重量,...}

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

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

【问题讨论】:

  • 请提供您正在使用的代码
  • 那是 100 行。我现在的位置是 ItemModel 类现在有一个 ListGetOptions() 方法。该方法调用 UOMModel.GetAllOptions()。该页面使用 ItemModel ~ 所以现在该页面作为对 List 的访问。那么如何将列表放入 DropDownList 的@Html 中呢?
  • DropDownList 或 DropDownListFor 使用 SelectListItem 对象列表 - 只需将数据转换为 SelectListItem 对象并将其设置为视图中列表的源...
  • 给我看看?我今天想我的脑子坏了。是 ItemModel public virtual List GetAllOptions() { UOMOptions o = new UOMOptions();返回 o.GetAllOptions(); } // 它是“虚拟的”,因为我正在使用 nhibernate

标签: asp.net html razor


【解决方案1】:

正如@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 { })

【讨论】:

  • 哦!天哪。让我忽略的就是 ViewBag 的使用。谢啦!!我在想必须在不使用 foreach() 的情况下进行一些实现。不过没关系。
  • 不客气老兄,如果有用记得点个赞;)
  • 超级投票给你。谢谢。像一个魅力。只希望我不必花这么长时间才能回到这一点。
猜你喜欢
  • 2012-04-11
  • 2015-10-25
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多