控制器收到的空表格

时间:2012-05-15 08:00:39

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

我不知道我做错了什么,或者是什么导致了这个错误。当我将此表单提交给控制器时,控制器会收到2个空字段:

以下是视图中的表单:

@Using Html.BeginForm("contactSearch", "search", FormMethod.Post)
    @Html.TextBox("SearchString")
    @Html.DropDownList("opportunite", "Choisissez une opportunité")
    @<input type="submit" value="Submit!" />
End Using

这是控制器:

    <HttpPost()>
    Function contactSearch(ByVal search As String, ByVal opportunite As opportunite) As ViewResult
        If opportunite Is Nothing Then
            ModelState.AddModelError("opportunite", "Opportunite is empty")
            ViewBag.opportunite = New SelectList(db.opportunite, "idOpportunite", "nomOffre")
            Return View()
        End If
  ...

我还有一点问题,如果我写的话:

 Function contactSearch(ByVal searchString As String, ByVal opportunite As Integer)

如果其中一个字段为空,我收到此错误:参数字典包含参数'opportunityite'的空条目...

所以,我必须解决的唯一方法是使用下面的代码。有没有更好的方法来解决这个问题?

    Function contactSearch(ByVal search As String, ByVal opportunite As opportunite) As ViewResult
        Dim opport As Integer = 0
        Try
            opport = Val(Request("opportunite"))
        Catch ex As Exception
        End Try

        If opport = 0 Then

2 个答案:

答案 0 :(得分:1)

您错误地命名了您的操作参数。应该是这样的:

<HttpPost()>
Function contactSearch(ByVal searchString As String, ByVal opportunite As String) As ViewResult
    ...

请注意,2个参数的类型为String。在您的代码中,您已为第二个参数使用了一些自定义opportunite类型,但这没有意义,因为DropDownList仅发送所选值。您不能指望它绑定到复杂类型。

答案 1 :(得分:1)

您是否获得了'搜索'值?。

尝试传递表单集以查看发布的内容

 public ActionResult CreateMarketingType(FormCollection form)
 {
      ...
 }