Прежде всего вы должны удалить частичное из класса Assignment, если хотите иметь возможность использовать его в своем методе put.
Во-вторых, вам не хватает атрибута.
Указывает, что параметр или свойство должны быть связаны с использованием тела запроса.
Когда вы используете атрибут FromBody
, вы указываете, что данные поступают из тела запроса, а не из URL / URI запроса. Вы не можете использовать этот атрибут с HttpGet
запросами, только с запросами PUT, POST и Delete. Также вы можете использовать только один тег атрибута FromBody
для каждого метода действия в Web API (если это изменилось в ядре mvc, я не смог бы найти что-либо, поддерживающее это).
Сводка: указывает, что параметр или свойство должны быть связаны с использованием данных маршрута из текущего запроса.
По сути, он FromRoute
будет смотреть на параметры вашего маршрута и извлекать / связывать данные на основе этого. Поскольку маршрут, когда вызывается извне, обычно основан на URL. В предыдущих версиях веб-API это сопоставимо с FromUri
.
public async Task<ActionResult> Put([FromRoute] int id, [FromBody] Assignment assignment)