我正试图在angular 11和.netcore 3.1 web api中添加一个多选下拉列表。当我提交下拉列表时,会出现这样的错误。"的Http失败响应http://localhost:5000/api/users/siteUsers/[object%20Object],[object%20Abject],[object%20Object]:400错误请求";
后端
[Route("siteUsers/{id}")]
我如何从前端传递数据。
编辑:
角度服务.ts文件
CreateSiteUsersAsync(data: FormData, id: number) {
return this.http.post(`${this.baseUrl}/${this.basePath}/siteUsers/${id}`, data);
}
.ts文件
async onSubmitHandler() {
const data = { ...this.userForm.value};
await this.userService.CreateSiteUsersAsync(data,data.siteCode).toPromise();
}
函数中的一些错误。
正在指定第一个Route
,但不是Http
方法。意味着默认方法为Get
。不能将表单数据传递给Get
方法。它应该是Post
或Put
。所以第一件事是添加一个http方法:
[Route("siteUsers/{id}")]
[HttpPost]
或者更优雅:
[HttpPost("siteUsers/{id}")]
接下来是从中获取数据的receival属性。有四个选项[FromRoute]
、[FromForm]
、[FromQuery]
和[FromBody]
。
默认情况下,C#使用[FromQuery]
。因此,对于id
和data
,您都需要指定搜索该数据的位置。参见以下代码:
[HttpPost("siteUsers/{id}")]
public IActionResult MyEndpoint([FromRoute] id, [FromForm] data)
{
...
return Ok();
}
您也可以使用[FromBody]
而不是[FromForm]
标记,因为从技术上讲,两者都来自正文。