2017-08-08 40 views
0

使用以下控制器方法擁有一個ASP.Net Core完整框架WebApi控制器。Javascript將POST JSON添加到WebAPI2 C#

[HttpPost("{id}/json")] 
public async Task<ILibraryModel> PostFromBody(int id, [FromBody]LibraryFilterOrder stuff, int pageSize, int pageNumber = 1) 
{ 
    return await DoStuff(id, stuff, pageSize, pageNumber); 
} 

它正在採用以下定義的LibraryFilterOrder模型。使用JavaScript的使用打字稿

fetch(`/api/Library/${pageIndex}/json?pageSize=${pageSize}&pageNumber=${pageNumber}`, { 
        method: "POST", 
        headers: {       
         'Content-Type': 'application/json; charset=utf-8' 
        }, 
        body: JSON.stringify({ stuff: { filters: filters, orders : orders } }) 
       }) 
       .then(response => response.json() as Promise<LibraryModel>) 
       .then(data => { 
        //DO stuff 
       }); 

的Chrome瀏覽器開發工具提取API

public class LibraryFilterOrder 
{ 
    public List<ContainerView.ContainerFilterType> Filters { get; set; } 
    public List<ContainerView.ContainerOrderType> Orders { get; set; } 
} 

public class ContainerFilterType 
{ 
    public string ColumnPrefix { get; set; } 
    public string ColumnName { get; set; } 
    public string FilterValue { get; set; } 
} 

public class ContainerOrderType 
{ 
    public string ColumnPrefix { get; set; } 
    public string ColumnName { get; set; }  
    public bool SortAscending { get; set; } 
    public int SequenceId { get; set; } 
} 

上午提供以下功能: enter image description here 與所有的在控制器中的東西變量未來通過與2個屬性空值。

任何與此有關的幫助將不勝感激,在最後一天拉我的頭髮或試圖解決問題,已將[FromBody]標籤取消參數,並且仍然爲空。

回答

1

您傳遞的JSON不正確。

改變這一行:

body: JSON.stringify({ stuff: { filters: filters, orders : orders } }) 

這一個:

body: JSON.stringify({ filters: filters, orders : orders }) 
+0

感謝羅馬,用得好好的,會接受它,當到達5分鐘大關,這樣的蠢事。 .. –

+0

@ BenTemple-Heald,不客氣 –