如何修改 SelectList 中的单个条目?

How to modify a single entry in SelectList?

在 SelectItem 中,我取回了 objects/values 的集合以用于下拉列表。我需要在返回的列表中找到一个特定的项目,如果它与传入的值 (stateCode) 匹配,则将 Selected 属性 设置为 true ...我有这个,显然,不不工作。 //psuedo 注释之后的行是我想进行更改的地方。关于如何执行此操作的任何想法?我似乎无法访问我想要更改的属性...

SelectList retVal = new SelectList(this.db.States.Where(x => x.Col1== someVal), "ValueCol", "TextCol", someVal);
foreach (SelectListItem item in retVal) {
    //psuedo
    retVal[item.Index].Selected = item.Value == stateCode ? true : false;
}
return retVal;

根据要求,这是我呈现此 SelectItem 绑定到的下拉列表的方式:

    <div class="select" id="StateDropDown">
        <label for="StateProvince">@Resources.Expert.State_or_Province:</label>
        @Html.DropDownListFor(x => x.StateProvince, Model.StateList)
    </div>

将所选值传递给@Html.DropdownList 方法是合适的。

假设 stateCode 是您要选择的州。

像这样。

<div class="select" id="StateDropDown">
<label for="StateProvince">@Resources.Expert.State_or_Province:</label>
@Html.DropDownListFor(x => x.StateProvince, Model.StateList, stateCode)

要为下拉列表分配 selected 值,您不需要在 select 列表中设置值。您需要做的就是在使用 for 助手时在模型上设置值。所以对于你的下拉

@Html.DropDownListFor(x => x.StateProvince, Model.StateList)

确保将 StateProvince 设置为您想要 select 的值。还要确保 StateProvince 的值与 SelectList Model.StateList.

中的值匹配