3

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;
}
4

1 に答える 1

0

dataType を json として指定する必要があると思います。以下は私にとってはうまくいきます(ノード/エクスプレスをPOSTハンドラーとして使用):

...
this.saveTemplate = function() {
   $.ajax({
      url: "/api/emailtemplate",
      type: "POST",
      data: ko.toJSON({ template: this }),
      contentType: "application/json",
      dataType: "json",
      success: function(result) {
        alert("success");
      },
      error: function() {
        alert("fail");
      }
    }
...
于 2013-02-09T06:27:52.160 に答える