DataBase中的MVC DropDown

时间:2013-08-13 14:29:40

标签: asp.net-mvc

public class DropDown
{

    public string[] SelectedItems { get; set; }

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

}

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

从DataBase我得到了Text和value字段并且在IEnumerable<T>中,其中T有2个属性id和text。

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

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

更新

例如:

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

我在ienumerable<student>得到了id和姓名。从那里我需要转换为DropDown

3 个答案:

答案 0 :(得分:2)

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))

答案 1 :(得分:1)

我不确定你为什么要创建自己的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帮助程序在您的视图中为您构建下拉列表:

@Html.DropDownList("SelectListItems")

答案 2 :(得分:0)

看起来您可能希望selectedItems中每个数组位置都有多个下拉列表?如果是这样,我上周就遇到了这个问题。我在Html.DropDownListFor(...)内打了一个foreach。

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