我試圖使用OData將數據發送到Web API。但收到的實體始終爲空。POST到Web API OData,收到的實體爲空
我使用JQuery這樣調用:
$.ajax({
url: "/odata/Products",
type: "POST",
//contentType: "application/json;odata=verbose",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(productToAdd),
dataType: "json",
success: function() {
alert("Server call has been OK!!");
},
error: function() {
alert("Server call has been failed!!");
}
});
的productToAdd對象是這樣的:
{ 「名」: 「蘋果」, 「說明」: 「好!」, 「價格」 「12.3」, 「類別」: 「果」}
我的控制器:
public class ProductsController : EntitySetController<Product, string>
{
private IProductService _prodSvc;
public ProductsController(IProductService prodSvc)
{
_prodSvc = prodSvc;
}
[Queryable]
public override IQueryable<Product> Get()
{
return _prodSvc.GetAllProducts();
}
protected override Product CreateEntity(Product product)
{
var addedProduct = _prodSvc.AddProduct(product);
return addedProduct;
}
}
而且我試着使用datajs,1.10.js FR但是我得到了同樣的結果。
OData.request(
{
requestUri: "/odata/Products",
method: "POST",
data: productToAdd
},
function (data) {
alert("Server call has been OK!!");
}
);
我認爲當它反序列化JSON對象時有些問題,但我不知道是什麼。你可以幫幫我嗎?
謝謝!
一般情況下,我建議您嘗試首先弄清楚,如果問題是一個客戶端的一個或一個服務器端的一個,當你遇到這樣的問題。使用像[Fiddler](http://fiddler2.com/)這樣的工具(或任何其他可監視HTTP請求和響應的工具)來查看從服務器返回的內容。服務器是否發送成功的狀態碼或錯誤? – 2013-04-25 18:31:52
您可以檢查控制器上的ModelState屬性嗎?這應該有關於反序列化失敗的任何信息。 – 2013-04-25 19:56:05