2014-05-24 47 views
0

我試圖實現使用ASP.NET的WebAPI 2.WebApi方法沒有獲取發佈的數據。什麼不見​​了?

藤模型臭名昭著Todo應用:

public class Todo 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
} 

的WebAPI帖子:

public void Post([FromBody]Todo todo) 
{ 
    // code to handle post. 
} 

Javascript點擊

$("#add").click(function(e) {    
     var todo = { 
     "Id": 20000, 
     "Title": "Hello world"      
    }; 
    $.post("http://localhost:51386/api/todo", JSON.stringify(todo)) 
     .done(function(data) { 
     alert("Data Loaded: " + data); 
    });    
}); 

我的HTTP請求主體看起來像這樣:

{"Id":20000,"Title":"Hello world"} 

使用默認路由。

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

當我調試方法Post時,它始終爲空。我錯過了什麼?

+1

檢查您的請求是否具有「Content-Type」標頭 –

回答

0

根據您的示例代碼,我能想到的是您沒有在您的配置中包含JSON格式器。它應該是這樣的:

System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 
    config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter()); 

Content-Type=application/json如果設置正確的格式纔會工作。

相關問題