0

在我的 asp.net MVC 3 应用程序中。

以下 ajax 调用在我的开发机器上运行良好,但是当我在 IIS 服务器上发布应用程序时它失败或对象总是发送空值来保存函数。

        $.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

Your JavaScript will result in double wrapping your model, the binding process will be looking for Model property in the SampleModel class. To bind directly it should rather be:

$.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 回答