HTTP post请求中的多个参数不在Asp.net webApi 2.0中绑定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP post请求中的多个参数不在Asp.net webApi 2.0中绑定相关的知识,希望对你有一定的参考价值。

我已经在HTTP Request中创建了一个用于发布多个参数的示例。但是我无法在Web Api控制器中分配值。请检查以下代码。

.TS

deleteEntry(entryId: number, entryActiveFlag: string): Observable<number> {
        let dataUrl = `http/localhost:8080/Entry/DeleteEntry`;
        let params = { entryId, entryActiveFlag};
        //params.append(entryId);
        //params.append('entryActiveFlag', entryActiveFlag);
        let body = JSON.stringify(params );
        return this.http.post(dataUrl, body)
            .map(res => res.json())
            .catch(this.handleError);
    }

.WebApi

 [HttpPost("DeleteEntry")]
    public  IActionResult DeleteEntry([FromBody]int entryId,string entryActiveFlag)
    {
        return Ok( _service.DeleteEntry(entryId, entryActiveFlag));
    }
答案

将输入详细信息包装在一个类中,并将类对象作为参数提供给Web API方法。在您的情况下,您可以添加以下类 -

public class EntryDetails
{
  public int EntryId {get;set;}

  public bool EntryActiveFlag

}

而你的网络方法将是

[HttpPost("DeleteEntry")]
    public  IActionResult DeleteEntry(EntryDetails entryDetails)
    {
        return Ok( _service.DeleteEntry(entryDetails.EntryId, entryDetails.EntryActiveFlag));
    }

因此也改变了从客户端方法的调用。

另一答案

尝试以下代码

let body = "entryId=23&entryActiveFlag=true";
let options = {
    headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
};
     return this.http.post(dataUrl, body,options )
                .map(res => res.json())
                .catch(this.handleError);

或者尝试以下代码

const formData = new FormData();
formData.append("key","value");
let options = {
    headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
};

 return this.http.post(dataUrl, formData,options )
            .map(res => res.json())
            .catch(this.handleError);

以上是关于HTTP post请求中的多个参数不在Asp.net webApi 2.0中绑定的主要内容,如果未能解决你的问题,请参考以下文章

什么步骤可以用post向网络传递多个参数

如何拼接GET请求的参数

Angular2 不在 POST 请求中传递参数

HTTP 多部分 (POST) 请求中的边界参数是啥?

apiroutes.post怎么获取参数

CORS Post 请求在本地工作但不在服务器上