ASP.Net MVC SelectLIst和List <SelectListItems>的问题

Ted*_*Ted 25 c# asp.net-mvc selectlist

我正在扩展一个枚举,并给出以下代码,selectListItems是一个通用的SelectListItem列表,它具有我的枚举的所有正确值.

第一个foreach循环工作正常.但是,当我创建实际的SelectList并传入时selectListItems,所有值都将丢失.我怎样才能保持这些价值不变?

foreach (SelectListItem item in selectListItems)
{
    string tex = item.Text;
    string val = item.Value;
    string sel = item.Selected.ToString();
}

SelectList selectList = new SelectList(selectListItems);

foreach (SelectListItem slid in selectList)
{
    string tex = slid.Text;
    string val = slid.Value;
    string sel = slid.Selected.ToString();
}
Run Code Online (Sandbox Code Playgroud)

Kel*_*sey 54

您需要更改构建它的行以告诉它在哪里查找值.在你的情况下,它将是:

SelectList selectList = new SelectList(selectListItems, "Value", "Text");
Run Code Online (Sandbox Code Playgroud)

但这不会延续所选项目.在这种情况下,您需要确定哪个项目应该是所选项目,并通过第四个参数传递它的值.

这是一个例子:

List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem() { Text = "Test1", Value = "1", Selected = false });
items.Add(new SelectListItem() { Text = "Test8", Value = "8", Selected = true });
items.Add(new SelectListItem() { Text = "Test3", Value = "3", Selected = false });
items.Add(new SelectListItem() { Text = "Test5", Value = "5", Selected = false });

SelectList sl = new SelectList(items, "Value", "Text", "8");
Run Code Online (Sandbox Code Playgroud)

您可能还想查看可能有用的SO线程.

编辑:刚刚看到你的评论,它不起作用,因为它不够聪明,知道默认情况下查找TextValue字段.您可以将它传递给一种对象,它使您能够通过定义要映射到TextValue属性的属性来绑定它.