页面不显示for循环中下拉列表中的上一个选定值 - ASP.NET MVC

时间:2014-09-16 07:39:16

标签: c# asp.net-mvc razor

我正在尝试使用DropDownList创建一个动态表单来选择值

在视图中,我有这个:

@for (int i = 0; i < Model.SelectedIntensities.Count(); i++)
{
    <tr>
        <td>
            @(i + 1)
        </td>
        <td>
            @Html.DropDownListFor(m => m.SelectedIntensities, new SelectList(Model.Filter.Intensities, Model.SelectedIntensities.ElementAt(i)))
        </td>
    </tr>
}

我在控制器中使用SelectedIntensities参数检索数据时工作得很好。

之后我将值设置回ViewModel

vm.SelectedIntensities = selectedIntensities.ToList();

但是在我看来,如果我有多个下拉列表,他们将第一个的值取为SelectedValue

因此,如果我从两个下拉列表中选择两种不同的强度:例如 20 25 。当我提交表单并且页面重新加载值时,下拉列表将显示 20 作为选定值...

我做错了什么?

1 个答案:

答案 0 :(得分:1)

正如Stephen在评论中所述,解决方案是指定SelectedIntensities

的索引

我取而代之:

@Html.DropDownListFor(m => m.SelectedIntensities, new SelectList(Model.Filter.Intensities, Model.SelectedIntensities.ElementAt(i)))

有了这个:

@Html.DropDownListFor(m => m.SelectedIntensities[i], new SelectList(Model.Filter.Intensities))

现在效果很好。