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

时间:2015-01-28 19:21:40

标签: c# asp.net-mvc-4 razor

在SelectItem中,我返回一个对象/值的集合,以便在下拉列表中使用。我需要在返回的列表中找到一个特定的项目,并将Selected属性设置为true,如果它匹配传入的值(stateCode)...我有这个显然不起作用。 //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>

2 个答案:

答案 0 :(得分:1)

要为下拉列表指定选定值,您无需在选择列表中设置值。您需要做的就是在使用for helper时设置模型的值。所以你的下拉

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

确保将StateProvince设置为要选择的值。还要确保StateProvince的值匹配SelectList Model.StateList中的值。

答案 1 :(得分:0)

将选定的值传递给@ 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)