2013-02-17 3 views
0

Каждый раз, когда я отправляю свое действие, мой ViewModel не является нулевым, но все значения внутри всегда равны.Controller Action не будет связывать JSON ViewModel

Где у меня есть 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;} 
} 

EDIT:

WOW, я чувствую себя тупой, у меня был private set, так вот что это не получалось .

+0

Можете ли вы разместить JSON для 'data' после того, как вы назовете' ko.toJSON'? –

+0

Несомненно, см. Редактирование – RJP

ответ

1

Дайте этому попытку:

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

То, что я должен был произойти в прошлом, является DATATYPE по умолчанию не Json, поэтому он не проходит правильно. Может быть не то, что здесь происходит, хотя ....

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> 
1

я столкнулся такие проблемы, как этого before.I поделиться вам решение, что я сделал.

Сделать изменение, как показано ниже

var data = ko.toJS(viewModelDetails); 

Примечание: для этого работать на старых браузерах, которые не имеют родной JSON сериализатор (например, IE 7 или выше), вы должны также ссылаться на json2. JS библиотека

Я знаю, что это будет работу совершенной .Если это решает вашу проблему пометить его как ответ

Если полезно вам нажмите восходящей линии

Что проблема в коде: -

var data = ko.toJSON(viewModelDetails); 

Вам нужно разобрать данные снова, как JSON, то вы можете использовать его, иначе он получит ошибку.