javascript (ノックアウト) 関数から呼び出されている Web API コントローラーにメソッドがあります。
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;
}