HTTP post 请求中的多个参数未在 Asp.net webApi 2.0 中绑定
Multiple parameter in HTTP post request not Binding in Asp.net webApi 2.0
我已经为 post HTTP 中的多个参数创建了一个示例 Request.But 我无法在 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));
}
将输入详细信息包装在一个 class 中,并将 class 对象作为参数提供给 Web API 方法。
在您的情况下,您可以在下面添加 class -
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);
我已经为 post HTTP 中的多个参数创建了一个示例 Request.But 我无法在 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));
}
将输入详细信息包装在一个 class 中,并将 class 对象作为参数提供给 Web API 方法。 在您的情况下,您可以在下面添加 class -
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);