字符串化无法通过IIS调用

时间:2013-02-12 10:05:37

标签: asp.net-mvc model-view-controller jquery

在我的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调用。?

请建议。感谢

2 个答案:

答案 0 :(得分: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': 1}'test'使用单引号而不是双引号)。

More info

答案 1 :(得分: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");
    }
});