ASP.Net MVC SelectLIst和List 的问题

我正在扩展一个Enum,并且给定以下代码, selectListItems是一个SelectListItems的通用List,它具有我的Enum的所有正确值。

第一个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(); } 

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

 SelectList selectList = new SelectList(selectListItems, "Value", "Text"); 

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

这是一个例子:

 List items = new List(); 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"); 

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

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

Interesting Posts