Контроллер не распознает переданные свойства - PullRequest
1 голос
/ 01 июня 2019

Я создаю веб-API с помощью ASP.NET Core и столкнулся с проблемой. У меня есть почтовый запрос, и я хочу передать ему объект муниципалитета в формате JSON. Проблема в том, что у меня есть свойство Name с атрибутом [Required]. Я вызываю конечную точку, используя Postman с этой полезной нагрузкой JSON {"Name": "London"}, и при проверке модели она говорит: «Поле Имя обязательно». даже при том, что это было определенно предоставлено.

Я пытался использовать атрибут [FromBody], но проблема с ним в том, что он не дает мне ошибок проверки и только говорит, что «вход был недействителен» и дает нулевой объект, поэтому отсутствие использования этого атрибута дает намного лучше ошибки.

Github: https://github.com/DeividasBrazenas/Taxes/blob/master/Taxes/Taxes/Controllers/BaseController.cs

BaseModel.cs

public class BaseModel
{
    public int Id { get; set; }
}

Municipality.cs

public class Municipality : BaseModel
{
    [Required]
    public string Name { get; set; }
    public ICollection<Tax> Taxes { get; set; }
}

MunicipalitiesController.cs

    [EnableQuery]
    public async Task<IActionResult> Post(Municipality baseObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        await Context.Set<Municipality>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }

Скриншот POST-запроса - enter image description here

1 Ответ

1 голос
/ 03 июня 2019

Внесите изменения ниже для вашего текущего MunicipalitiesController

  1. Добавьте public async Task<IActionResult> Post(Municipality baseObject) с FromBody

    [EnableQuery]
    [HttpPost]
    public async Task<IActionResult> Post([FromBody]Municipality baseObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
    
        await Context.Set<Municipality>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }
    
  2. Измените запрос JSON в нижнем регистре.

    {
            "name":"1231"
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...