4

$.ajax POST を介して、jQuery から MVC3 コントローラーにオブジェクトを渡しています。開発者ツールを使用してデバッグしているときに、ajax データ プロパティに割り当てているオブジェクトを確認できます。オブジェクトには、値が null のプロパティが含まれています。コントローラーをデバッグすると、JS デバッガーで null だったプロパティが "null" (文字列) になりました。

どうしてこれなの?これを防ぐにはどうすればよいですか?

C# オブジェクト

public class User
{
   public string Name { get; set; }
}

Javascript オブジェクト

var user = {
Name: null
}

コントローラーの方法

public JsonResult HelloWorld(User user) { .. some logic .. }

ajaxコール

var data = user;
$.ajax({
url: '/Controller/HelloWorld/',
data: data,
type: 'post',
success: ...
error: ...
})
4

1 に答える 1

4

ええ、それはデフォルトのモデル バインダーの残念な副作用です。リクエストに null プロパティをまったく含めないか、JSON リクエストを使用することで、これを回避できます。

$.ajax({
    url: '@Url.Action("HelloWorld", "Controller")',
    data: JSON.stringify({ Name: null }),
    contentType: 'application/json',
    type: 'post',
    success: function (result) {
        // ...
    }
});

注意事項:

  • contentType: 'application/json'.
  • JSON.stringifyリクエストをJSON文字列に変換するためにdataパラメータを囲みます。
于 2012-06-28T19:52:25.763 に答える