2

厳密に型指定されたビューのデータとして JSON オブジェクトを含む ajax 投稿を使用しています。フォームのシリアル化は正常に機能しますが、モデルの取得中にコントローラーでプロパティがマップされていません。Firebug では、次のスナップを取得していますFirebug の投稿状態

シリアル化された JSON オブジェクトを c# オブジェクトにマップするにはどうすればよいですか

4

3 に答える 3

2

フォームを json オブジェクトに変換するには、jquery 拡張機能をコピーする必要があります。

(function() {
    $.fn.serializeObject = function() {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
                    if (o[this.name]) {
                        if (!o[this.name].push) {
                            o[this.name] = [o[this.name]];
                        }
                        o[this.name].push(this.value || '');
                    } else {
                        o[this.name] = this.value || '';
                    }
                });
        return o;
    };
})(jQuery)

json2.jsライブラリを含めJSON.stringify()て、レガシー ブラウザのサポート       を追加します。

次に、ajaxを次のように変更します

$.ajax({
    url : '',
     type: 'POST',
    contentType : 'application/json',
    data : JSON.stringify($('form').serializeObject()),
     ....
})

あなたの場合

$('#frm').submit(function() {

    postJSON('@Url.Action("Create", "District")', JSON.stringify($('form').serializeObject()),
            function(result) {
                alert(result.Message);
                if (result.Success) {
                    window.location = '@Url.Action("Index", "District")';
                }
            });
    return false;
});
于 2013-04-02T05:43:22.337 に答える
1

これは単なる標準のシリアル化された形式です。JSON ではありません。

あなたはこれを見たいと思うかもしれません。

于 2013-04-02T05:40:18.820 に答える