所以我有一个MVC应用程序,其中我试图在ListBox中显示项目列表,允许用户根据需要添加或删除项目。以下是发生的事情:
这是我的Get,我在其中创建了SelectList以在View中的ListBox中显示:
' GET: Trucks/Edit/5
Async Function Edit(ByVal id As Integer?) As Task(Of ActionResult)
....
Dim curItems As SelectList
If truck.Items IsNot Nothing Then
curItems = New SelectList(truck.Items, "ID", "Name")
Else
curItems = New SelectList("")
End If
ViewData("ItemNames") = curItems
Return View(truck)
End Function
那么这就是我的编辑视图:
@ModelType myproject.Truck
@Code
ViewData("Title") = "Edit"
Dim ItemNames As SelectList
ItemNames = ViewData("ItemNames")
End Code
<h2>Edit Truck</h2>
@Using (Html.BeginForm("Edit", "Trucks", FormMethod.Post, New With {.name = "frmTruckEdit", .id = "frmTruckEdit"}))
@Html.AntiForgeryToken()
@<div class="form-horizontal">
<hr />
<div class="text-danger">@(ViewData("TError"))</div>
@Html.ValidationSummary(True, "", New With {.class = "text-danger"})
@Html.HiddenFor(Function(model) model.ID)
<br />
....
<div class="form-group">
<div class="control-label col-md-2" style="font-weight: bold">Items for this Truck</div>
<div class="col-md-10">
@Html.ListBox("ItemNames", New SelectList(ItemNames), htmlAttributes:=New With {.id = "ItemNames", .class = "mylistbox"})
</div>
<div class="col-md-offset-2 col-md-10">
<br />
<div class="btn-link" id="RemoveItem">Remove Selected Item</div>
</div>
</div>
<br />
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div> End Using
所以尝试这种方式,我在ListBox参数中指定 New SelectList(ItemNames),ListBox中的项显示为&#34; System.Web.Mvc.SelectListItem&#34;
如果我只是删除&#34;新选择列表&#34;所以参数只是 ItemNames ,ListBox中的项目显示正确(名称文本),但是,当我点击Post时,我收到错误
没有类型为&#39; IEnumerable&lt;的ViewData项目。 SelectListItem&gt;&#39;那 有关键的&#39; ItemNames&#39;
注意:我也尝试将其用作IEnumerable(Of SelectListItem)。 &#39;新&#39;不能使用它,所以我不能尝试指定&#34;新IEnumerable(ItemNames)&#34;在ListBox中,只是&#34; ItemNames&#34;给出了关于没有ViewData项目的相同错误。
我现在不知道我在这里做错了什么。如果您需要更多信息,请告诉我。谢谢!!