我是MVC的新手并且正在处理一个已经存在的项目。我只是想填写一个下拉列表以允许更改订单。当页面加载时,我需要下拉选择的值集。
视图上的模型只有几个属性,然后是一个迭代的类型列表,用于在页面上生成数据。这些项目包含displayorder属性
我的问题是关于订单。此视图用于更改页面上记录的显示顺序。所以有一个检查,看看最大的displayorder是基于类型的,然后selectlistitmes被添加到下拉列表中。下拉列表填充正常,但您可以看到所选属性也已设置,但在呈现页面时这不起作用。我总是显示第一项。我认为问题在于:<%= Html.DropDownListFor(Function(x)x.Location,Options)%>
我认为我想要的是x.DisplayOrder(item包含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>
答案 0 :(得分:0)
您需要设置用于在页面加载时保留下拉列值的属性。
答案 1 :(得分: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
%>