public class DropDown
{
public string[] SelectedItems { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}我试图从上面的结构的DB中得到一个MVC的DropDown。
从DataBase中,我得到了文本和值字段,在IEnumerable<T>中,T有两个属性id和文本。
将i枚举id转换为字符串数组并将id、文本分配给SelectedListItem的最佳方法是什么?
我想过循环遍历i枚举并形成DropDown,但我认为会有更好的方法。
更新
例如:
In DB i have student table with
ID,
Name,
Class,
Section我在ienumerable<student>上得到了身份证和名字。从那里我需要转换成一个DropDown
发布于 2013-08-13 14:34:04
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))发布于 2013-08-13 14:55:09
我不知道您为什么要创建自己的DropDown类,为什么不使用内置的MVC 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")发布于 2013-08-13 14:54:09
看起来,您可能希望对selectedItems中的每个数组位置进行多次下拉吗?如果是这样的话,我上周就遇到了这个问题。我打电话给Html.DropDownListFor(.)内部的一个领班。
<% for(int i = 0; i < Model.SelectedItems.length; i++) %>
<%: Html.DropDownListFor(m => m.SelectedItems[i], Model.Items %>https://stackoverflow.com/questions/18211872
复制相似问题