2

加载多个具有相同名称的 DropDownLists 时遇到问题。我在这里附上我的代码:

看法:

@{
   int i = 1

    foreach (var queue in Model.Queues)
    {
            using (Html.BeginForm("ChangeQueueState", "Home", FormMethod.Post))
            {
                List<SelectListItem> sli = ViewBag.states[i - 1];
            <div>@Html.DropDownList("state", sli)</div>
            }
     }
    i++
}

视图中有更多我没有显示的代码。

在我的控制器中,我只需更改相应队列的状态并加载其中包含状态列表ViewBag.states的列表,SelectedListItem其中每个队列的正确状态为“已选择”。

问题是当视图被加载时,所有的DropDownLists都加载了最后修改的状态。例如,如果我将第 5 个队列从“打开”更改为“关闭”,则所有DropDownLists显示都Closed选择了“”选项(尽管在数据库中正确应用了更改)。

我认为问题是由于 MVC 在DropDownList名称和SelectListItem关联项之间进行的绑定,但我无法将 DDL 名称更改为"state" + @i,因为状态绑定到在ChangeQueueState我的 Controller 的“”方法中接收到的参数。

我将衷心感谢您的帮助。提前致谢!

4

1 回答 1

0

我认为您应该为每个下拉列表使用不同的名称。假设每个队列都有不同的 ID,所以尝试使用以下代码:

<div>@Html.DropDownList("state" + queue.ID, sli)</div>

当然你需要区分哪个是集合中的哪个。我经常这样做,希望它对你有用。

于 2012-12-20T03:10:10.630 回答