0

アクションに投稿するたびに、myViewModelは null ではありませんが、内部のすべての値は常に null です。

私が持っている場所ではconsole.log、完全な JSON がコンソールに出力されていることがわかります。

何か案は?

アクション:

public ActionResult Add(MyViewModel model)
{
//stuff
}

JS:

<script type="text/javascript">
var model = @Html.Raw(Viewbag.MyJSON);

var viewModelDetails = ko.mapping.fromJS(model);

this.addData = function() {
var data = ko.toJSON(viewModelDetails);
console.log(data);
$.post("/user/add", data, function(result){
//stuff
});
}
</script>

モデル

public  MyViewModel()
{
Game Game{get;set;}
}

編集:

うわー、私はばかげているように感じprivate setます.

4

3 に答える 3

1

データをjsonに変換する必要がありますJSON.stringify(result)

<script type="text/javascript">
var model = @Html.Raw(Viewbag.MyJSON);

var viewModelDetails = ko.mapping.fromJS(model);

this.addData = function() {
var data = ko.toJSON(viewModelDetails);
console.log(data);
$.post("/user/add", JSON.stringify(data), function(result){
//stuff
}, 
dataType: json,
traditional: true

);
}
</script>
于 2013-02-18T00:32:06.307 に答える
1

これを試してください:

$.post("/user/add", data, function(result){
//stuff
}, dataType: json);

私が過去に経験したことは、デフォルトの dataType が Json ではないため、正しく渡されないことです。ここで起こっていることではないかもしれませんが....

于 2013-02-18T00:23:07.320 に答える
1

以前にこのような問題に直面したことがあります。私が作成した解決策を共有します。

以下のように変更します

var data = ko.toJS(viewModelDetails);

注: ネイティブ JSON シリアライザーを持たない古いブラウザー (IE 7 以前など) でこれを機能させるには、json2.js ライブラリーも参照する必要があります。

私はこれが完璧に機能することを知っています。問題が解決した場合は、回答としてマークしてください

役に立つ場合は、アップリンクをクリックしてください

コードの問題は何ですか:-

var data = ko.toJSON(viewModelDetails);

データを json として再度解析する必要があります。その後、それを使用できます。そうしないと、エラーが発生します。

于 2013-02-18T06:36:20.830 に答える