Контроллер в .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; }
}
}