Dropdownlistfor MVC ASP.Net VB

时间:2014-08-01 09:04:37

标签: asp.net asp.net-mvc vb.net

我将数据发送到我的dropdownlistfor,我可以选择该数据,但当我点击按钮转到发布方法时,我收到错误:

  

"类型' System.InvalidOperationException'的例外情况发生在   System.Web.Mvc.dll但未在用户代码中处理

     

附加信息:具有密钥的ViewData项   '的SelectedItem'属于' System.String'但必须是类型   ' IEnumerable的'"

我认为dropdownlistfor中razor视图中的第一个值是选定值,第二个是要显示的值列表,但现在我不知道下拉列表是如何工作的; /

你可以帮助我吗?

我的型号代码:

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)

1 个答案:

答案 0 :(得分:0)

可能我将模型返回视图的事实是一个问题,或者我玩得很开心

@If isPost Then
 ...
End If

我不确定导致错误的是什么,但现在我正在使用ListBoxFor,一切都像它应该......奇怪:)如果有人还想解释我为什么它没有按预期工作(好吧)因为我希望它能起作用)然后立即回答我:)