【问题标题】:MVC 5 Razor - Listbox that displays items passed in a Viewbag listMVC 5 Razor - 显示在 Viewbag 列表中传递的项目的列表框
【发布时间】:2016-05-23 14:40:48
【问题描述】:

我正在将一个 ViewBag 列表传递给我的视图,并且我正在尝试在列表框中显示此列表,以便我可以选择此列表中的项目。

这是视图的控制器方法:

 public ActionResult AddMembers(int? id)
        {
            ViewBag.lstMembers = db.ClubMembers.ToList();

            var selClub = db.Clubs.Find(id);
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            return View(selClub);

        }

这是我目前拥有的,但它没有正确显示项目,如下图所示:

@Html.ListBoxFor(m => m.ClubMembers, new SelectList ( ViewBag.lstMembers))

如何设置列表框的来源,以便它显示通过控制器方法通过 ViewBag.lstMembers 传入的项目

【问题讨论】:

  • 您需要指定将用于呈现对象的字符串表示形式的显示成员和值成员,否则 MVC 将只调用ToStringSelectList 对此有一个重载的构造函数

标签: asp.net-mvc model-view-controller razor asp.net-mvc-5


【解决方案1】:

您需要指定将用于呈现对象的字符串表示的显示成员和值成员,否则 MVC 将只调用ToString

SelectList 对此有一个重载的构造函数,例如:

new SelectList(items, "ValuePropertyName", "DisplayPropertyName")

看这里:

https://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist.selectlist(v=vs.118).aspx#M:System.Web.Mvc.SelectList.

【讨论】:

    【解决方案2】:

    你可以使用 MultiSelectList 类似的东西 行动中

    ViewBag.lstMembers = new MultiSelectList(db.ClubMembers.ToList(), "ValueProperty", "NameProperty");
    

    在视图中

    @Html.ListBox("lstMembers", ViewBag.lstMembers as MultiSelectList)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多