Angular 4代码未达到ASP.Net Web Api控制器

时间:2019-04-29 11:25:57

标签: angular asp.net-web-api asp.net-web-api2

我正在做一个必须填写表格的项目。进行更改后,我可以准确地从数据库获取所有必需的数据,我必须将其保存在数据库中。代码未在Asp.Net Web Api中达到所需的控制器和方法,但在前端正常工作。这里也没有错误显示。请让我知道我该怎么办。我所缺少的。我真的很担心

这是我必须打的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; ;
            }


        }

This is what I am sending These Are the values which are passing While after debugging I got this error on console

3 个答案:

答案 0 :(得分:1)

您现有的代码应该可以工作,但是您需要逐步尝试以找出问题所在。

您可以尝试使用Promise

所以您的发布方法将类似于:

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

答案 1 :(得分:0)

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应用程序中正确配置了路由。

答案 2 :(得分:0)

尝试重新格式化请求对象。现在,它是一个数组。尝试使其成为包含数组类型属性的对象。

控制器动作签名

public IHttpActionResult SaveOrder([FromBody] LargeOrder itemOrder)
{}

public class LargeOrder
{
    public List<ItemOrder> itemOrders {get; set;}
}

角度代码:

getlandingGatepassvalueByparameter(itemOrder:any){        
         let url="http://localhost:50366/api/CustomerOrder/SaveOrder"    
          return this._restService.Post(url,JSON.stringify({"itemOrders":itemOrder}));           

 }