POST到WebAPI控制器会导致null参数

Sco*_*ott 5 asp.net jquery json asp.net-web-api

我正在尝试将JSON字符串POST到WebAPI控制器,该控制器接受复杂类型作为参数,但所有参数属性始终为null.根据下面的代码,任何想法为什么?请求正确地访问WebAPI方法,参数不为null,但所有属性都是.

编辑:如果我删除对JSON.stringify()的调用,参数属性正确填充,但我的请求体现在是一个查询字符串而不是一个有效的JSON对象,这将不会飞,因为我的实际对象也持有一些子在作为查询字符串传递时不起作用的集合.

模型

public class SavedViewData
{
    public int UserID { get; set; }
    public int? SavedID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

JSON请求正文(从Fiddler复制)

{"UserID":"1","SavedID":null,"Name":"Test","Description":"Description"}
Run Code Online (Sandbox Code Playgroud)

WebAPI行动

[HttpPost]
public int Save(SavedViewData viewData)
{
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

jQuery $ .ajax调用

var view = {
    UserID: userID,
    SavedID: null,
    Name: 'Test',
    Description: 'Description'
};

$.ajax({
    type: "POST",
    url: '/api/save',
    data: JSON.stringify(view),
    contenttype: "application/json; charset=utf-8",
    success: function (data) {    
        alert('success');
    }
});
Run Code Online (Sandbox Code Playgroud)

Sco*_*ott 8

正如我所料,这是一个愚蠢的事情:

contenttype: "application/json; charset=utf-8",
Run Code Online (Sandbox Code Playgroud)

本来应该

contentType: "application/json; charset=utf-8",
Run Code Online (Sandbox Code Playgroud)

类型中的"T"没有大写......有半天!