1

我是 MVC 的新手,正在处理一个已经存在的项目。我只是想填写一个下拉列表以允许更改订单。当页面加载时,我需要设置下拉选择值。

视图上的模型只有几个属性,然后是一个类型列表,通过迭代生成页面上的数据。这些项目包含 displayorder 属性

我的问题是关于订单的。此视图用于更改页面上记录的显示顺序。所以有一个检查来查看基于类型的最大显示顺序,然后将 selectlistitmes 添加到下拉列表中。下拉列表填充得很好,但您可以看到 selected 属性也已设置,但是在呈现页面时这不起作用。我总是显示第一个项目。我认为问题出在这里: <%=Html.DropDownListFor(Function(x) x.Location, Options)%>

我想我想要的是 x.DisplayOrder (项目包含 displayorder 属性),但这不是模型的一部分。它是我们正在迭代的列表的一部分。

任何帮助,将不胜感激。

<td>
<%Dim Options As New List(Of SelectListItem)%>
<%For intDisplayOrder As Integer = 1 To Model.ReviewTypes(item.ReviewType)
Dim newSelectedItem As New SelectListItem
newSelectedItem.Text = intDisplayOrder.ToString()
newSelectedItem.Value = intDisplayOrder.ToString()

If intDisplayOrder = item.DisplayOrder Then
newSelectedItem.Selected = True

End If

Options.Add(newSelectedItem)
Next

%>

<%=Html.DropDownListFor(Function(x) x.Location, Options)%>

</td>
4

2 回答 2

0

您需要设置用于在页面加载时保存下拉值的属性。

于 2013-02-13T20:33:57.760 回答
0

我认为您需要将此部分放在控制器中,并使用 formCollection.DisplayOrder 设置下拉列表的选定项

<%Dim Options As New List(Of SelectListItem)%>
<%For intDisplayOrder As Integer = 1 To Model.ReviewTypes(item.ReviewType)
Dim newSelectedItem As New SelectListItem
newSelectedItem.Text = intDisplayOrder.ToString()
newSelectedItem.Value = intDisplayOrder.ToString()

If intDisplayOrder = item.DisplayOrder Then
newSelectedItem.Selected = True

End If

Options.Add(newSelectedItem)
Next

%>
于 2013-02-13T20:55:40.427 回答