在SelectList Collection中设置选定项

时间:2013-05-16 22:24:33

标签: c# asp.net asp.net-mvc selectlist

我有一个具有以下属性的类。它从现有列表构造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集合中的相应项仍为空。

我似乎无法找到更新集合中对象的方法,因此该设置将用于生成的HTML中。

我正在使用@Html.DropDownListFor来呈现HTML。但我可以看到,只要代码执行完毕,集合中的对象就不会被修改。

有人能看到我错过的东西吗?

3 个答案:

答案 0 :(得分:11)

SelectList

中有一个可选的附加参数
SelectList list = new SelectList([...my collection...], "Value", "Key", SelectedID);

检查定义

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

设置所选值,与dataValueField

的类型相同

答案 1 :(得分:1)

是的,这些属性是只读的,代码应该起作用:

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

答案 2 :(得分:1)

我有一个名为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");

default value

I have another options