在“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
中有一个可选的附加参数
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;
}
}