MVC ListBox的麻烦

时间:2017-03-18 22:55:59

标签: asp.net-mvc vb.net listbox selectlist viewdata

所以我有一个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项目的相同错误。

我现在不知道我在这里做错了什么。如果您需要更多信息,请告诉我。谢谢!!

0 个答案:

没有答案