2017-10-17 73 views
1

的API(C#編寫的,ASP.NET核心)接收3個字段:標題,內容和類別的陣列(整數):發送陣列到API

[HttpGet] 
[AllowAnonymous] 
public IActionResult CreatePublication(string title, string content, IEnumerable<int> categoryIds) 
{ 
    return Ok(); 
} 

問題是API總是接收categoryIds數組中的零個元素。

在Angular4客戶端:

let ccategoryIds = new Array<number>() 
ccategoryIds.push(2) 
ccategoryIds.push(5) 
ccategoryIds.push(7) 

let requestOptions = { 
    params: new HttpParams() 
    .set('title', 'The title') 
    .append('content', 'The content') 
    .append('categoryIds', ccategoryIds.toString()), 
    withCredentials: true 
} 

this.http 
    .get('http://localhost:53203/api/publications/createPublication', requestOptions) 
    .subscribe(data => { 
    }, 
    (err: HttpErrorResponse) => { 
    alert('Error') 
    }) 

更新

如果使用JSON.stringify(ccategoryIds)的代替ccategoryIds.toString(),收到在零個元素API也是。

enter image description here

這不是後端的問題。在郵差它的工作原理: enter image description here enter image description here

回答

1

很明顯,我不能看你怎麼寫API處理器,但我瘦你正在使用.toString(),你應該使用JSON.stringify()

let ccategoryIds = new Array<number>() 
ccategoryIds.push(2) 
ccategoryIds.push(5) 
ccategoryIds.push(7) 

let requestOptions = { 
    params: new HttpParams() 
    .set('title', 'The title') 
    .append('content', 'The content') 
    .append('categoryIds', JSON.stringify(ccategoryId)), 
    withCredentials: true 
} 

this.http 
    .get('http://localhost:53203/api/publications/createPublication', requestOptions) 
    .subscribe(data => { 
    }, 
    (err: HttpErrorResponse) => { 
    alert('Error') 
    }) 
+0

@JohnDoe這看起來像是C#端的一個問題。我們能在那裏看到你的代碼嗎? –