我在 web api 控制器中有一个方法,它是从 javascript (knockout) 函数调用的。
public void SaveEmailTempage(EmailTemplateModel template)
{
var x = template.ToString();
...
上面的 x 变量只在那里,所以我可以在控制器中设置一个断点,然后它就会被命中。传入的模板变量的所有属性始终设置为 null,这就是问题 - 为什么?我不确定在 $.ajax 调用中传递什么数据参数。
在javascript中我有这个(下)。在 data 属性中,我尝试了 self、this、ko.JS、ko.JSON - 每个都以 self、this、$data、$root 作为输入,我放在那里似乎没有传递值。在 aspx 中,我有一个带有 data-bind="value: ko.toJSON($root)" 的文本区域,它确实包含我想发送到服务器的 json。
function emailViewModel() {
var self = this;
//data
...
//operations
...
self.saveTemplate = function () {
$.ajax({
url: '/api/emailtemplate/',
type: 'POST',
data: ko.toJSON({template: self}),
contentType: 'application/json',
success: function (result) {
alert('success');//debug
},
error: function () { alert('fail');}//debug
});
}
return self;
}