Контроллер в .NET api при получении POST запроса заполняет моделью пустыми значениями вместо тех что в теле запроса

То что передаю(TS Angular):

export class User{
  public name:string;
  public age: number;

  constructor(name: string, age: number){
    this.name = name;
    this.age = age;
  }

Запрос

return this.httpClient.post('https://localhost:44471/api/Cut/Cut', new User("Я тупой)", 100))

Тело запроса(смотрю в отладчике браузера):

{"name":"Я тупой)","age":100}

Контроллер на backend-е:

[ApiController]
[Route("api/[controller]")]
public class CutController : ControllerBase
{
  [HttpPost]
  [Route("[action]")]
  public IActionResult Cut([FromBody]User user)
  {
    Console.WriteLine("557");
    Console.WriteLine(user.name);
    Console.WriteLine(user.age);
    user.Age += 10;
    Console.WriteLine(user.age);
    return Ok();
  }

То что выплевывает контроллер в консоль:

557

0
10

В отладчике в полях user.name: null, user.age: 0. Соответственно вопрос, куда делись данные?


Ответы (1 шт):

Автор решения: Павел Татаров

Как оказалось поля модели должны быть свойствами, мне это помогло. Если поля не определены как свойства, то десериализация все равно "работает", но поля заполняются дефолтными значениями типов.

namespace ProfCut.Models
{
    public class User
    {
        public string name { get; set; }
        public double age { get; set; }

    }
}
→ Ссылка