8
AJAX調用無MediaTypeFormatter是提供給讀類型的對象 'InventoryItem'
$.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
模型。
A similar question關於複雜類型建議從Beta升級到RC來修復模型綁定更改,我已經完成。
如果問題不明顯,我該如何糾正這個錯誤?如果我將[FromUri]屬性添加到路由POST方法,則AJAX調用會正確路由,但是會有空的InventoryItem
。如果您需要其他信息,請告訴我。
好,我是繼[教程](http://www.asp.net/web- api/raw-content/tutorials/creating-a-web-api-that-supports-crud-operations),他們的'POST'動作是'PostProduct'。但是,分號確實修復了它!非常感謝你。 – Josh
這不是在創建新項目時ASP.NET MVC 4 RC路由使用的標準約定。他們使用'api/{controller}/{id}'。如您所見,動作名稱不是url的一部分,這意味着基於用於執行請求的HTTP動詞選擇了正確的動作。但無論如何,這與你的問題無關。您的問題源自爲Content-Type HTTP標頭傳遞錯誤的值。 –
因此,除了請求類型之外,您通常不應該添加任何操作名稱?比如'Post'或'Delete',而不是'PostItem'或'DeleteItem'? – Josh