我正在循环并尝试更改列表中的“Selected”项目。@ Html.DropDownListFor选中的项目不工作
但是,默认项目未被选中。当我查看源html时,没有“选定”参数。
这里是我的类:
public List<SelectListItem> buyerDropdown { get; set; }
public int selectedBuyer { get; set; }
这里是我的代码:
@foreach (American_States state in Model.AmericanStates)
{
{
// change the "selected" buyer to match the buyer Id for this state
Model.buyerDropdown.Where(x => x.Value == Convert.ToString(state.Buyer.Id)).FirstOrDefault().Selected = true;
}
<tr>
<td>@state.name</td>
<td>@state.Title.OfficerName</td>
<td>@Html.DropDownListFor(model => model.selectedBuyer, Model.buyerDropdown, new { @class = "form-control" })</td>
<td></td>
</tr>
}
当我踏进我的代码可以看到SelectItemList正确的项目被更新为“选择”。
我看不到为什么没有选择下拉菜单中的正确项目?
UPDATE
基于T-罗伊现在我有这样的代码:
当调试正在计算正确的价值选择的指数值,但下拉仍然没有选择默认值:
@foreach (American_States state in Model.AmericanStates)
{
{
// change the "selected" buyer to match the buyer Id for this state
string selectedOption = Model.buyerDropdown.Single(x => x.Value == Convert.ToString(state.HudHomeStore_Buyer.Id)).Value;
<tr>
<td>@state.name</td>
<td>@state.HudHomeStore_Title.OfficerName</td>
<td>@Html.DropDownListFor(model => model.selectedBuyer, new SelectList(Model.buyerDropdown, "Value", "Text", selectedOption), new { @class = "form-control" })</td>
<td></td>
</tr>
}
}
您的模型类如何处理selectedBuyer?它看起来像你在所有美国州使用相同的属性? –
你的代码根本没有意义。您可以在绑定到相同属性的循环内创建多个下拉列表。您不仅会生成无效的html(重复的'id'属性),而且只有第一个下拉菜单会在您提交时绑定到您的模型。你究竟想在这里做什么? –
模型绑定通过绑定到您的属性的值来工作,所以它的'selectedBuyer'的值决定了选择的内容(如果selectedBuyer的值匹配其中一个选项值,那么它将被选中,但这会使得在'foreach'循环中没有任何意义 –