AJAX致电
$.ajax({
url: '/api/Inventory',
cache: false,
type: 'POST',
data: json,
contentType: 'application/json, charset=utf-8',
statusCode: {
201: function (data) {
console.log(data);
viewModel.items.push(data);
}
}
});
已发送数据(json
)/请求有效负载
{"Id":0,"Upc":"3456789012","Quantity":"200","Category":"Vodka","TransactionType":"Audit","MetaData":"ABSOLUT 750ml"}
响应错误
没有MediaTypeFormatter可用于读取类型的对象 来自媒体类型“未定义”的内容的“InventoryItem”。“
路由POST方法
public HttpResponseMessage PostItem(InventoryItem item)
JSON字符串中的所有属性都存在于InventoryItem
模型中。
关于复杂类型的 similar question 建议从Beta升级到RC以修复模型绑定更改,我已经完成了。
如果问题不明显,我该如何纠正此错误?如果我将[FromUri]属性添加到Routed POST方法,那么AJAX调用将正确路由,但空InventoryItem
。如果您需要任何其他信息,请告诉我。
答案 0 :(得分:19)
contentType: 'application/json, charset=utf-8',
应该是:
contentType: 'application/json; charset=utf-8',
请注意;
而不是,
的使用,Post
是内容类型和字符集之间的正确分隔符。此外,如果您遵循标准的RESTful约定,您的控制器操作应该被调用PostItem
而不是public HttpResponseMessage Post(InventoryItem item)
{
...
}
,如您所示:
{{1}}