【问题标题】:MVC DropDown from DataBase来自数据库的 MVC 下拉菜单
【发布时间】:2013-08-13 14:29:40
【问题描述】:
public class DropDown
{

    public string[] SelectedItems { get; set; }

    public IEnumerable<SelectListItem> Items { get; set; }

}

我正在尝试从具有上述结构的 DB 中获取 MVC 中的 DropDown。

从数据库中,我得到了 Text 和 value 字段,并在 IEnumerable&lt;T&gt; 中拥有 T 有 2 个属性 id 和 text。

将 ienumerable id 转换为字符串数组并将 id、文本分配给 SelectedListItem 的最佳方法是什么?

我想过循环遍历 ienumerable 并形成 DropDown,但认为会有更好的方法。

更新

例如:

In DB i have student table with
 ID,
 Name,
 Class,
 Section

我在 ienumerable&lt;student&gt; 中获得了 id 和 Name。从那里我需要转换成DropDown

【问题讨论】:

标签: asp.net-mvc


【解决方案1】:
IEnumerable<Student> studentList = GetStudentList();
IEnumerable<SelectListItem> dropdownItems = new MultiSelectList(studentList, "ID", "Name",selectedValues);

DropDown dropDown = new DropDown { Items = dropdownItems  };

如果你想创建一个列表框,你可以像这样使用 HTML 助手来完成:

@Html.ListBoxFor(item => item.SelectedStudents, new MultiSelectList(Model.StudentList, "ID", "Name",selectedValues))

【讨论】:

  • 我需要从 Ienumerable 到下拉类!
  • 我已经在 Ienumerable 中有下拉数据,我需要转换为带有字符串数组和 SelectList 项的 DropDown 类型的类
  • @user2067567 我不明白。您的数据库中到底有什么?
  • 我可以获取新的选择列表项,但不确定如何获取选定值,因为我有一个列表框
  • @user2067567 然后你应该使用 MultiSelectList 类。我已经更新了代码。
【解决方案2】:

我不确定您为什么要尝试创建自己的 DropDown 类,为什么不使用内置的 MVC HTML Helper?

如果你有一个 IEnumerable 你想变成一个 SelectList 供助手使用,这样的事情会起作用:

var selectListItems = from t in items
select new SelectListItem{
     Text = t.Text,
     Value = t.Id
}.ToList();

然后将其触发到您的视图中,理想情况下您可以使用视图模型,但 ViewBag 也可以:

ViewBag.SelectListItems = selectListItems;

最后,让您的 HTML Helper 在您的视图中为您构建下拉列表:

@Html.DropDownList("SelectListItems")

【讨论】:

  • 我正在尝试在不使用 viewbag 的情况下发送!
【解决方案3】:

看起来您可能想要为 selectedItems 中的每个数组位置设置多个下拉列表?如果是这样,我上周刚遇到这个问题。我在Html.DropDownListFor(...) 内部调用了一个foreach。

<%    for(int i = 0; i < Model.SelectedItems.length; i++) %>
    <%: Html.DropDownListFor(m => m.SelectedItems[i], Model.Items %>

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多