Jos*_*osh 8 c# asp.net-mvc asp.net-web-api
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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
已发送数据(json)/请求有效负载
{"Id":0,"Upc":"3456789012","Quantity":"200","Category":"Vodka","TransactionType":"Audit","MetaData":"ABSOLUT 750ml"}
Run Code Online (Sandbox Code Playgroud)
响应错误
没有MediaTypeFormatter可用于从媒体类型为"未定义"的内容中读取"InventoryItem"类型的对象."
路由POST方法
public HttpResponseMessage PostItem(InventoryItem item)
Run Code Online (Sandbox Code Playgroud)
JSON字符串中的所有属性都存在于InventoryItem模型中.
一个类似的问题就复杂类型建议从Beta升级到RC来修复模型绑定的变化,这是我做的事.
如果问题不明显,我该如何纠正这个错误?如果我将[FromUri]属性添加到Routed POST方法,那么AJAX调用将正确路由,但为空InventoryItem.如果您需要任何其他信息,请告诉我.
Dar*_*rov 19
contentType: 'application/json, charset=utf-8',
Run Code Online (Sandbox Code Playgroud)
应该:
contentType: 'application/json; charset=utf-8',
Run Code Online (Sandbox Code Playgroud)
请注意,使用;而不是,内容类型和字符集之间的正确分隔符.此外,如果您遵循标准RESTful约定,则应调用控制器操作,Post而不是PostItem如您所示:
public HttpResponseMessage Post(InventoryItem item)
{
...
}
Run Code Online (Sandbox Code Playgroud)