【发布时间】:2014-08-01 09:04:37
【问题描述】:
我将数据发送到我的下拉列表,我可以选择该数据,但是当我单击按钮转到发布方法时出现错误:
“'System.InvalidOperationException' 类型的异常发生在 System.Web.Mvc.dll 但未在用户代码中处理
附加信息:具有键的 ViewData 项 “SelectedItem”的类型为“System.String”,但必须是类型 'IEnumerable'。”
我认为 dropdownlistfor 中剃刀视图中的第一个值是选定的值,第二个是要显示的值列表,但现在我不知道下拉列表的工作原理;/
你能帮帮我吗?
我的型号代码:
Public Class NewProcessIndex
Public Property Name As String
Public Property DataSource1 As String
Public Property SelectedItem As String
Public Property Items As IEnumerable(Of SelectListItem)
End Class
我的控制器代码:
<HttpGet>
Function AddNewProces() As ActionResult
Dim listBoxData = New NewProcessIndex With {
.Items = {
New SelectListItem() With {.Value = 1, .Text = "item 1"},
New SelectListItem() With {.Value = 2, .Text = "item 2"},
New SelectListItem() With {.Value = 3, .Text = "item 3"}
}
}
Return View(listBoxData)
End Function
<HttpPost>
Function AddNewProces(newProcesData As NewProcessIndex) As ActionResult
newProcesData.DataSource1 = newProcesData.SelectedItem
Return View(newProcesData)
End Function
最后是我的视图代码:
@ModelType NewProcessIndex
<h2>AddNewProces</h2>
@Using (Html.BeginForm("AddNewProces", "Admin", FormMethod.Post))
@<div class="form-horizontal">
@Html.LabelFor(Function(m) m.Name)
@Html.TextBoxFor(Function(m) m.Name)
@Html.ValidationMessageFor(Function(m) m.Name)
@Html.DropDownListFor(Function(x) x.SelectedItem, Model.Items)
<input type="submit" value="AddNewProces" />
</div>
End Using
@If FormMethod.Post Then
@<p>@Model.Name</p>
@<p>@Model.DataSource2</p>
End If
编辑: 有趣的事情...... dropdownlistfor 不起作用,但 listboxfor 以这种形式工作:
@Html.ListBoxFor(Function(x) x.SelectedItem, Model.Items)
【问题讨论】:
标签: asp.net asp.net-mvc vb.net