1

私はMVCとモデルバインディングに本当に慣れていないので、何か些細なことを間違っていると思います。いくつかのデータをバインドしようとしています。

意見;

    $.ajax({
            url: '@Url.Action("Moo")',
            type: "post",
            dataType: "string",
            contentType: "application/json",
            data: JSON.stringify({"test": "bar", "test2": "bar2"}),
            success: function (data) {}       
    });

モデル;

Public Class MyTestData

     Public Property test() As String
     Public Property test2() As String

End Class

コントローラ;

Function Moo(test As MyTestData) As ActionResult

    Return View()
End Function

ダバガーを実行すると、コントローラーのテストから「何も」受信しません。1 つの文字列のみを試してみると、コードが機能します (ビューのデータが {(test:bar)} に変更され、コントローラーのデータ型が MytestData から MytestData に変更されました)。弦)。

任意の入力が評価されます。

4

1 に答える 1

3

アクション パラメータの名前を変更します。それは呼び出され、内部にtestあるプロパティと競合しています:test

Function Moo(model As MyTestData) As ActionResult
    Return View()
End Function

テストが多すぎると思います:-)FooBarより良い名前のようです:-)

冗談はさておき、dataTypeパラメータにも問題があります。などの値はありませんstring。ASP.NET MVC では、フレームワークが HTTP Content-Type 応答ヘッダーを適切に設定し、jQuery が結果を自動的に解析するためにそれを使用するため、通常はこれを指定する必要はありません。したがって、単にそれを取り除くか、実際の戻り値の型と一致する正しい値に指定したことを確認してください。dataType: 'html'アクションはビューを返すため、一貫性を保つために設定できます。

于 2013-01-28T07:57:59.610 に答える