Я хотел бы отправить сообщение, запрос на исправление на свой бэкэнд-сервер. Я отправляю запрос с угловым значением и прикрепляю объект, который нужно обновить, в теле запроса следующим образом:
`
return this.http
.patch<GearItem>(
`${this.merchandiseUrl}/${gearItem.id}`,
JSON.stringify(gearItem),
this.headers
)
`
На сервере у меня есть следующий маршрут:
`
[HttpPatch("{id}")]
public async Task<IActionResult> Update([FromBody] GearItemViewModel gearItem)
{
return Ok();
}
`
Этот маршрут никогда не выполняется, однако, когда я изменяю его на:
[HttpPatch("{id}")]
public async Task<IActionResult> Update([FromBody] object gearItem)
{
return Ok();
}
Маршрут получает удар и выполняется.
Структура объекта, который я посылаю из углового вида, выглядит следующим образом:
`
formData: FormData {}
id: 3
images: (3) [{…}, {…}, {…}]
inStock: true
name: "Hat"
price: 27
sizes: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
`
И GearItemViewModel выглядит следующим образом:
public class GearItemViewModel
{
public long Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public bool InStock { get; set; }
public string FormData { get; set; }
public IEnumerable<GearSizeViewModel> Sizes { get; set; }
public IEnumerable<GearImageViewModel> Images { get; set; }
}
Я не уверен, почему я не могу получить объект viewModel через аргументы метода Update, используя атрибут [FromBody]. В журналах я вижу что-то о Executing ObjectResult, writing value of type 'Microsoft.AspNetCore.Mvc.ValidationProblemDetails'.
Но я не знаю, почему возникает проблема с проверкой, когда модели из внутреннего и внешнего интерфейса имеют одинаковые имена свойств.