0

何が間違っていたのか、何がこのバグを引き起こしたのかわかりません。このフォームをコントローラーに送信すると、コントローラーは 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)

そして、これらのフィールドのいずれかが空の場合、次のエラーが発生しました: パラメーター ディクショナリには、パラメーター 'opportunite' の null エントリが含まれています...

したがって、これを解決する唯一の方法は、以下のコードを使用することでした。これを解決する良い方法はありませんか?

    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
4

2 に答える 2

1

アクション引数に誤った名前を付けました。このようにする必要があります:

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

2つの引数がString型であることに注意してください。コードでは、2番目の引数にカスタムopportuniteタイプを使用していますが、DropDownListは選択された値のみを送信するため、これは意味がありません。複合型にバインドすることは期待できません。

于 2012-05-15T08:03:43.077 に答える
1

「検索」値を取得していますか?

フォーム コレクションを渡して、何が投稿されているかを確認してください

 public ActionResult CreateMarketingType(FormCollection form)
 {
      ...
 }
于 2012-05-15T08:08:00.810 に答える