为什么通过API方法参数将数据从客户端传输到服务器时不进行初始化?

时间:2018-12-15 10:46:55

标签: c# angular

我在Angular上有一个post方法,可以将数据发送到服务器:

addData(usersId: number[], description?: string) {
const specUrl = HOST_URL + '/api/Doctors/addtoblacklist';
description = 'Test';

return this.http.post(specUrl, {
  usersId, description
});
}

AspNet Core上有一个方法可以从客户端接收数据:

    [HttpPost("addtoblacklist")]
    public IActionResult AddToBlackList(int[] usersId, string description)
    {
        if (!int.TryParse(User.Identity.Name, out var doctorId))
        {
            return BadRequest(new { message = "Wrong claims" });
        }

        var status = _doctorService.AddToBlackList(usersId, doctorId);

        return status ? (IActionResult)Ok() : BadRequest();
    }

在调试中,当方法addData工作时,我进入了方法AddToBlackList,但是参数usersIddescription始终为空。通常,当不同类型或不同名称的变量或者其中之一使用UpperCase时,就会发生这些问题。我已经尝试过的所有方法...通常我不明白问题可能是什么...也许有人有想法?我将非常感谢

2 个答案:

答案 0 :(得分:0)

尝试:

return this.http.post(specUrl, {
     usersId:usersId, 
     description:description
});

答案 1 :(得分:0)

我创建了一个模型

public class AddToBlackListModel
{
    public int[] id { get; set; }
    public string description { get; set; }
}

并用于[FromBody]

[HttpPost("addtoblacklist")]
    public IActionResult AddToBlackList([FromBody] AddToBlackListModel creationModel)
    {
        // 
        if (!int.TryParse(User.Identity.Name, out var doctorId))
        {
            return BadRequest(new { message = "Wrong claims" });
        }

        var status = _doctorService.AddToBlackList(creationModel.id, doctorId);

        return status ? (IActionResult)Ok() : BadRequest();
    }

之后一切正常)谢谢大家