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);
}