【发布时间】:2019-07-08 19:34:19
【问题描述】:
我正在尝试通过我的 Angular 7 应用程序 getDocumentUploadDetailsByIds 方法将整数值数组传递给服务器 webapi 端点。由于某种原因,端点正在接收空值。我尝试了几种方法,但端点的参数为空。谁能告诉我哪里出错了
组件
export interface IDocumentIds {
ids: number[];
}
documentIds: IDocumentIds = <IDocumentIds>{};
this.documentUploadService.createDocumentUpload(this.documents)
.then((result) => {
if (result) {
this.documentIds.ids = Object.keys(result).map(k => result[k]);
console.log(this.documentIds);
this.getDocumentUploadDetailsByIds(this.documentIds);
this.setGridOptions();
this.setColumns();
this.notify.success('Documents uploaded Successfully');
}
}).catch(err => {
this.notify.error('An Error Has Occured While uploading the documents');
});
public getDocumentUploadDetailsByIds(documentIds) {
if (this.ManagerStrategyId != null) {
this.Loading = true;
this.initGrid();
this.documentUploadService.getDocumentUploadDetailsByIds(documentIds)
.then((data) => {
if (data) {
this.DocumentUploadDetails = data;
this.Loading = false;
this.notify.success('Documents uploaded Successfully');
}
}).catch(err => {
this.notify.error('An Error Has Occured While uploading the documents');
});
}
}
服务
getDocumentUploadDetailsByIds(documentIds: IDocumentIds) {
return this.mgr360CommonService.httpGetByKey('/api/documentupload/detailsByIds' , documentIds);
}
const httpPostOptions = {
headers:
new HttpHeaders(
{
'Content-Type': 'application/json; charset=utf-8',
}),
withCredentials: true,
};
httpGetByKey(url: string, key: any) {
return this.httpClient.get(this.webApiLocation + url + '/' + key, httpPostOptions)
.pipe(map((response: Response) => {
return response;
}))
.toPromise()
.catch((error: any) => {
this.onError(error);
return Promise.reject(error);
});
}
asp.net web api 型号
public class DocumentIdViewModel
{
public int[] ids;
}
端点
[HttpGet]
[Route("api/documentupload/detailsByIds/{id}")]
public IHttpActionResult DetailsByIds(DocumentIdViewModel documentIds)
{
var viewModel = GetDocumentUploadDetailsByIds(documentIds);
return Ok(viewModel);
}
我也试过将参数设置为web方法的int数组
从角度
this.getDocumentUploadDetailsByIds(this.documentIds.ids);
在服务器上
public IHttpActionResult DetailsByIds(int[] documentIds)
{
var viewModel = GetDocumentUploadDetailsByIds(documentIds);
return Ok(viewModel);
}
【问题讨论】:
-
你可以给
DocumentIdViewModel documentIds上课吗? -
我认为它已经在 post public class DocumentIdViewModel { public int[] ids; }
-
您是否看到您实际上是在
Request Payload中发送id's- 在您的浏览器中看到这个? -
在我的浏览器控制台中我可以看到localhost:56888/api/documentupload/detailsByIds/…
-
如果我只从角度传递数组,那么我可以看到localhost:56888/api/documentupload/detailsByIds/123,124,125