在“SelectList Collection”中设置“Selected Item”

本文关键字:Selected Item 设置 Collection SelectList | 更新日期: 2023-09-27 18:13:54

我有一个具有以下属性的类。它从一个现有的列表中构造一个SelectList对象,然后设置选中的项。

public SelectList ProviderTypeList
{
    get
    {
        SelectList list = new SelectList([...my collection...], "Value", "Key");
        SelectListItem item = list.FirstOrDefault(sli => sli.Text == SelectedProviderType);
        if (item != null)
           item.Selected = true;
       return list;
    }
}

然而,当这段代码完成后,item.Selected为真。但SelectList集合中对应的项仍然为null。

我似乎找不到一种方法来更新集合中的对象,以便在结果HTML中使用该设置。

我使用@Html.DropDownListFor来渲染HTML。但是我可以看到,当这段代码执行后,集合中的对象并没有被修改。

有人知道我错过了什么吗?

在“SelectList Collection”中设置“Selected Item”

SelectList中有一个可选的附加参数

SelectList list = new SelectList([...my collection...], "Value", "Key", SelectedID);

检查定义

public SelectList(IEnumerable items, string dataValueField, string dataTextField, 
object selectedValue);

设置所选值,与dataValueField

类型相同。

我有一个名为id_waers的项目列表。

var id_waers = db.MONEDAs.Where(m => m.ACTIVO == true).ToList();

,其中id为"WAERS"。

我将创建一个带有id_waers值的SelectList,"WAERS"作为id,要显示的文本也将是id,并显示选中的"USD"值

ViewBag.MONEDA = new SelectList(id_waers, "WAERS", dataTextField: "WAERS", selectedValue: "USD");

默认值

还有其他选项

是,这个属性是只读的,下面的代码应该可以工作:

        SelectList selectList = new SelectList(Service.All, "Id", "Name");
        foreach (SelectListItem item in selectList.Items)
        {
            if (item.Value == yourValue)
            {
                item.Selected = true;
                break;
            }
        }