【问题标题】:Problem with ASP.Net MVC SelectLIst and List<SelectListItems>ASP.Net MVC SelectLIst 和 List<SelectListItems> 的问题
【发布时间】:2010-06-30 16:00:14
【问题描述】:

我正在扩展一个 Enum,鉴于以下代码,selectListItems 是一个通用的 SelectListItems 列表,其中包含我的 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,"Text", "Value");这行得通。我不确定为什么没有它它就行不通。有人吗?

标签: c# asp.net-mvc selectlist


【解决方案1】:

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

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

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

这是一个例子:

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

您可能还想查看this SO thread,这可能会有所帮助。

编辑:刚刚看到您的评论,它不起作用,因为它不够聪明,无法知道默认查找 TextValue 字段。您可以向它传递一种对象类型,它使您能够通过定义映射到 TextValue 属性的属性来绑定到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多