每次发布到我的Action时,我的ViewModel
都不为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
,所以这就是它没有受到限制。
答案 0 :(得分:1)
尝试一下:
$.post("/user/add", data, function(result){
//stuff
}, dataType: json);
我过去发生的事情是,默认的dataType不是Json,所以它没有正确传递它。可能不是这里发生的事情......
答案 1 :(得分: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>
答案 2 :(得分:1)
我之前遇到过这样的问题。我与你分享我所做的解决方案。
进行如下更改
var data = ko.toJS(viewModelDetails);
注意:为了在没有本机JSON序列化程序的旧版浏览器(例如,IE 7或更早版本)上工作,您还必须引用json2.js库
我知道工作正常。如果解决您的问题,请将其标记为回答
如果对您有用,请点击上行链接
代码中的问题是什么: -
var data = ko.toJSON(viewModelDetails);
您需要再次将数据解析为json,然后才能使用它,否则会出错。