Angular 4 代码未命中 ASP.Net Web Api 控制器
Angular 4 code is not Hitting the ASP.Net Web Api controller
我正在做一个必须制作表格的项目。在对它进行更改后,我可以准确地从数据库中获取所有必需的数据,我必须将它保存在数据库中。代码在前端正常工作,但未在 Asp.Net web Api 中命中所需的控制器和方法。也没有显示错误 here.Please 让我知道我必须 do.What 我错过了什么。我真的很担心
这是我的 Api 我必须走的路
getlandingGatepassvalueByparameter(itemOrder:any){
let url="http://localhost:50366/api/CustomerOrder/SaveOrder"
return this._restService.Post(url,itemOrder);
}
我的 Post 方法中的下面一个
Post(url: string, data: any): Observable<any[]> {debugger;
let headers = new Headers({
'Content-Type': 'application/json',
'Authorization': 'Bearer '
});
let options = new RequestOptions({ headers: headers });
return this._http.post(url, data,options)
.map((response) => {
debugger;
return response.json();
})
.catch(e => {
debugger;
return Observable.throw(e);
});
}
}
下面是控制器方法,我必须输入控制器名称是 CustomerOrder
[System.Web.Http.HttpPost]
public IHttpActionResult SaveOrder(List<ItemOrder> itemOrder)
{
string result = null;
//result = _customerOrder.SaveOrder(itemOrder);
if (result != null)
{
return Ok(result);
}
else
{
return null; ;
}
}
1) 在控制器方法中添加[FromBody]:
public IHttpActionResult SaveOrder([FromBody] List<ItemOrder> itemOrder)
2) 通过json.stringify
转换对象调用
getlandingGatepassvalueByparameter(itemOrder:any){
let url="http://localhost:50366/api/CustomerOrder/SaveOrder"
return this._restService.Post(url,JSON.stringify(itemOrder));
}
3) 确保您的路由在 api 应用程序中正确配置。
尝试重新格式化请求对象。现在它是一个数组。尝试使它成为包含数组类型 属性.
的对象
控制器动作签名
public IHttpActionResult SaveOrder([FromBody] LargeOrder itemOrder)
{}
public class LargeOrder
{
public List<ItemOrder> itemOrders {get; set;}
}
Angular代码:
getlandingGatepassvalueByparameter(itemOrder:any){
let url="http://localhost:50366/api/CustomerOrder/SaveOrder"
return this._restService.Post(url,JSON.stringify({"itemOrders":itemOrder}));
}
您现有的代码应该可以工作,但您需要逐步尝试以查看问题所在。
你可以试试 Promise
:
因此您的 post 方法将类似于:
Post(url: string, data: any): Promise <any> {
let headers = new Headers({
'Content-Type': 'application/json'
});
return this._http.post(url, JSON.stringify(data), { headers: headers })
.toPromise()
.catch(this.handleError);
}
// to handle the error
private handleError(error: any): Promise<any> {
return Promise.reject(error.message || error);
}
我正在做一个必须制作表格的项目。在对它进行更改后,我可以准确地从数据库中获取所有必需的数据,我必须将它保存在数据库中。代码在前端正常工作,但未在 Asp.Net web Api 中命中所需的控制器和方法。也没有显示错误 here.Please 让我知道我必须 do.What 我错过了什么。我真的很担心
这是我的 Api 我必须走的路
getlandingGatepassvalueByparameter(itemOrder:any){
let url="http://localhost:50366/api/CustomerOrder/SaveOrder"
return this._restService.Post(url,itemOrder);
}
我的 Post 方法中的下面一个
Post(url: string, data: any): Observable<any[]> {debugger;
let headers = new Headers({
'Content-Type': 'application/json',
'Authorization': 'Bearer '
});
let options = new RequestOptions({ headers: headers });
return this._http.post(url, data,options)
.map((response) => {
debugger;
return response.json();
})
.catch(e => {
debugger;
return Observable.throw(e);
});
}
}
下面是控制器方法,我必须输入控制器名称是 CustomerOrder
[System.Web.Http.HttpPost]
public IHttpActionResult SaveOrder(List<ItemOrder> itemOrder)
{
string result = null;
//result = _customerOrder.SaveOrder(itemOrder);
if (result != null)
{
return Ok(result);
}
else
{
return null; ;
}
}
1) 在控制器方法中添加[FromBody]:
public IHttpActionResult SaveOrder([FromBody] List<ItemOrder> itemOrder)
2) 通过json.stringify
转换对象调用getlandingGatepassvalueByparameter(itemOrder:any){
let url="http://localhost:50366/api/CustomerOrder/SaveOrder"
return this._restService.Post(url,JSON.stringify(itemOrder));
}
3) 确保您的路由在 api 应用程序中正确配置。
尝试重新格式化请求对象。现在它是一个数组。尝试使它成为包含数组类型 属性.
的对象控制器动作签名
public IHttpActionResult SaveOrder([FromBody] LargeOrder itemOrder)
{}
public class LargeOrder
{
public List<ItemOrder> itemOrders {get; set;}
}
Angular代码:
getlandingGatepassvalueByparameter(itemOrder:any){
let url="http://localhost:50366/api/CustomerOrder/SaveOrder"
return this._restService.Post(url,JSON.stringify({"itemOrders":itemOrder}));
}
您现有的代码应该可以工作,但您需要逐步尝试以查看问题所在。
你可以试试 Promise
:
因此您的 post 方法将类似于:
Post(url: string, data: any): Promise <any> {
let headers = new Headers({
'Content-Type': 'application/json'
});
return this._http.post(url, JSON.stringify(data), { headers: headers })
.toPromise()
.catch(this.handleError);
}
// to handle the error
private handleError(error: any): Promise<any> {
return Promise.reject(error.message || error);
}