我有一个具有以下属性的类。它从现有列表构造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。但我可以看到,只要代码执行完毕,集合中的对象就不会被修改。
有人能看到我错过的东西吗?
答案 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");