【发布时间】:2013-03-21 03:50:08
【问题描述】:
我在 MVC 控制器中有以下功能
public class XyzController:Controller
{
public ActionResult Index(){...}
[HttpPost]
public bool Save(string jsondata)
{
//parse json data to insert into the database
}
}
我想将此视图模型传递给保存函数
var myObj = function (id) {
var self = this;
self.myId = id;
self.parameters = ko.observableArray();
}
var ViewModel = function () {
var self = this;
self.myObjList = ko.observableArray();
self.sendItems = function() {
$.ajax({
type: "POST",
url: '/Xyz/Save',
data: ko.toJSON(self),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response);
},
error: function (request, status, error) {
alert(request.statusText);
}
});
}
}
var vm = new ViewModel()
ko.applyBindings(vm);
如果我将数据作为 JSON.stringify({jsondata:ko.toJSON(self)}) 传递,我确实得到了数据,但是我如何将它转换为一个对象,以便我可以遍历 myObjList 和参数?
【问题讨论】:
-
只要让 action 方法接受你的对象的任何类型的对象。让模型绑定器完成工作。
-
完全同意 Andrew 的观点:您正在绕过 MVC 的固有能力之一。更改您的签名以接收目标对象类型并让 MVC 为您进行映射。