为什么我的.Net Core API无法从请求有效负载接收数据? [关闭]

问题描述 投票:-2回答:2

我正在使用.Net Core API构建一个Angular网站作为后端。当我发布新邮政编码时,我的Angular服务正确发送数据,但我的API没有收到数据。

使用类似的代码编辑(put)工作正常。

添加(发布):postcode values are null in Codepostcodes values are filled in Request Payload

编辑(放):postcode values are not null in Codethe request payload of put

邮编控制器:

    [Route("api/[controller]")]
    public class PostcodeController : Controller
    {
        IPostCodeAcces<PostcodeVerwerking, int> _postcodeRepo;
        public PostcodeController(IPostCodeAcces<PostcodeVerwerking, int>p)
        {
            _postcodeRepo = p;
        }

        [HttpPost]
        public IActionResult Post([FromForm]PostcodeVerwerking postcode)
        {
            int res = _postcodeRepo.AddPostcode(postcode); 
            if (res != 0)
            {
                return Ok();
            }
            return Forbid();
        }

        [HttpPut("{id}")]
        public IActionResult Put(int id, [FromForm] PostcodeVerwerking p)
        {
            if (id == p.Id)
            {
                int res = _postcodeRepo.UpdatePostcode(id, p);
                if (res != 0)
                {
                    return Ok(res);
                }
                return NotFound();
            }
            return NotFound();
        }
    }

角度服务:

  putPostcode(id, formdata: FormData): Observable<PostcodeVerwerking>{
    return this.http.put<PostcodeVerwerking>(this.apiUrl + "/" + id, formdata);
  }

  postPostcode(formdata: FormData): Observable<PostcodeVerwerking>{
    return this.http.post<PostcodeVerwerking>(this.apiUrl, formdata);
  }
c# angular asp.net-core-webapi
2个回答
0
投票

我想PostcodeVerwerking.Id是一个int类型的属性,所以它不能为null。序列化程序也不能将null绑定到id属性,因此整个PostcodeVerwerking在控制器中将为null。如果要将null作为Id发送,则必须将Id声明为int?,如:

public int? Id {get; set;}


0
投票

我修好了它。我只需要在控制器中将postcode更改为p并且它有效。

错误:

[HttpPost]
public IActionResult Post([FromForm]PostcodeVerwerking postcode)
{
   int res = _postcodeRepo.AddPostcode(postcode); 
   if (res != 0)
   {
       return Ok();
   }
    return Forbid();
}

对:

[HttpPost]
public IActionResult Post([FromForm]PostcodeVerwerking p)
{
   int res = _postcodeRepo.AddPostcode(p); 
   if (res != 0)
   {
      return Ok();
   }
   return Forbid();
}
© www.soinside.com 2019 - 2024. All rights reserved.