如何post一个字符串值从Angular8到.NET core WebAPI?

How to post a string value from Angular 8 to .NET core Web API?

我无法 post 我的 WebApi 的简单字符串值,我收到 415 错误。 实现这一目标的正确语法是什么? 谢谢!

createRole(name: string) {
    var fullUri = this.baseUri;
    fullUri += 'api/role/CreateRole';

    return this.http.post(fullUri, name);
}
[HttpPost("CreateRole")]
public async Task<IActionResult> CreateRoleAsync([FromBody]string name)
{
    //...

}

api

中的小调整
 [HttpPost]
            [Route("api/role/CreateRole")]
            public int Post([FromBody] string name)
            {
               //logic...
            }

使用 [FromForm] 属性而不是 [FromBody] 属性。并将 [ApiController] 属性应用于您的控制器。

[HttpPost("CreateRole")]
public async Task<IActionResult> CreateRoleAsync([FromForm]string name)
{
    //...

}

如果您 post name 作为 FormData 或使用 Form 标签,它将起作用。因为 [FromForm] 从 post 编辑的表单字段中获取值。

另一个解决方案是 post name 作为对象并制作模型/DTO

public class SaveModel 
{
   public string Role {get; set;}
}
[HttpPost("CreateRole")]
public async Task<IActionResult> CreateRoleAsync([FromBody] SaveModel model)
{
    //...

}