0

私のasp.net MVC 3アプリケーションで。

次の ajax 呼び出しは開発マシンでうまく機能しますが、IIS サーバーでアプリケーションを公開すると失敗するか、オブジェクトが常に null 値を送信して関数を保存します。

        $.ajax
        ({
            url: '../MyPath/save',
            type: 'POST', 
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify({'Model': object}),
            success: function (data) {
                alert("success");
                return true;
            }
          });

    [HttpPost]
    public JsonResult Save(SampleModel Model) 
           * Model values always null over IIS *
    { 

    }

@url.action() を使用しようとしたり、別のブラウザで試したりしましたが、それでも同じ問題が解決しません。

これがIIS呼び出しで機能しない理由は誰にもわかります。

提案してください。ありがとう

4

2 に答える 2

0

JavaScriptを使用すると、モデルが二重にラップされ、バインディングプロセスがクラスModel内のプロパティを検索します。SampleModel直接バインドするには、次のようにする必要があります。

$.ajax({
    url: '../MyPath/save',
    type: 'POST', 
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(object),
    success: function (data) {
        alert("success");
    }
});
于 2013-02-12T10:20:56.180 に答える
0

使うべきだと思いますjQuery.parseJSON()

     $.ajax({
        url: '../MyPath/save',
        type: 'POST', 
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: jQuery.parseJSON({'Model': object}),
        success: function (data) {
            alert("success");
        }
     });

ドキュメントから:

Passing in a malformed JSON string may result in an exception being thrown. 
For example, the following are all malformed JSON strings: 
  • {test: 1}( test は二重引用符で囲まれていません)。
  • {'test': 1}( 'test' は、二重引用符の代わりに単一引用符を使用しています)。

より詳しい情報

于 2013-02-12T10:17:18.803 に答える