从 angular 7 传递到我的 Asp.net 核心 WebApi 控制器的参数都是空的

Parameters passed from angular 7 to my Asp.net core WebApi controller are all null

我在下面有这段代码,我想将两个参数从 Angular 7 应用程序传递到我的 Asp.Net 核心 WebApi 控制器,我只是不知道 Angular http post 调用控制器。控制器在被击中时获取所有空值。但我可以传入一个模型,它工作得很好!

问题 - 这是我不明白的地方。当我传入这样的模型时

[HttpPost("confirm")]
public async Task<IActionResult> ConfirmEmail(EmailConfirmationOptions options) {}

并让我的 post 也通过一个模型,就像这样。有效!

const model = {UserId: userId, Code: code };
return this.http.post(this.baseUrl + 'confirm', model);

这是我的 Angular 调用,我尝试了不同的值,但 none 似乎正确传递了它们。

confirm(userId: number, code: string) {
    // return this.http.post(this.baseUrl + 'confirm, { userId, code });
    // return this.http.post(this.baseUrl + 'confirm/' + userId + '/code/' + code, {});
    return this.http.post(this.baseUrl + 'confirm', userId);
}

这是我的控制器,其中 userId 为 0,code 为 null

[AllowAnonymous]
//[HttpPost("confirm")]
//[HttpPost("{id}/{code}", Name = "confirm")]
// [HttpPost("{userId}", Name = "confirm")]
[HttpPost("confirm")]
public async Task<IActionResult> ConfirmEmail(string userId, string code) 
{
    if (userId == null || code == null)
    {
        return BadRequest("error");
    }

    var user = await _userManager.FindByIdAsync(userId);

    if (user == null) {
        return BadRequest("error");
    }

    // code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
    var result = await _userManager.ConfirmEmailAsync(user, code);

    if (result.Succeeded) {
        return Ok();
    } else {
        return BadRequest("error");
    } 
}

如果客户端请求是这样的

return this.http.post(this.baseUrl + 'confirm/' + userId + '/code/' + code, {});

服务器上的路由模板需要与预期路由匹配

[HttpPost("confirm/{userId}/code/{code}")]
public async Task<IActionResult> ConfirmEmail(string userId, string code) {
    //...omitted for brevity
}

引用Routing to controller actions in ASP.NET Core

如果控制器具有 [ApiController] 属性,则尝试明确说明数据从何处绑定

[HttpPost("confirm/{userId}/code/{code}")]
public async Task<IActionResult> ConfirmEmail([FromRoute]string userId, [FromRoute]string code) {
    //...omitted for brevity
}

引用Model Binding in ASP.NET Core