Перейти к содержанию

Выбор источника привязки

По умолчанию связыватель модели ASP.NET Core использует три источника: данные формы, данные маршрута и строку запроса.
Иногда требуется специально указать, к какому источнику нужно выполнить привязку. Иногда требуется указать дополнительный источник, например, заголовок запроса.
В этом случае используются специальные атрибуты:

public class PhotosModel : PageModel
{
    public void OnPost(
        [FromHeader] string userId,
        [FromBody] List<Photo> photos)
    {
        ...
    }
}

Здесь мы указываем, что параметр userId нужно заполнить из HTTP-заголовка userId, а из тела запроса (по умолчанию в формате JSON) нужно заполнить список объектов Photo.
Вот возможные варианты источников привязки:

  • [FromHeader] — привязка к значению HTTP-заголовка;
  • [FromQuery] — привязка к значению строки запроса;
  • [FromRoute] — привязка к значению маршрута;
  • [FromForm] — привязка к данным формы из тела запроса;
  • [FromBody] — привязка к содержимому тела запроса.

Отметим, что все атрибуты, за исключением [FromBody] можно использовать на нескольких свойствах или параметрах. Кроме того, при отправке формы атрибуты [FromForm] и [FromBody] фактически являются взаимоисключающими.

Также есть дополнительные атрибуты для настройки процесса привязки:

  • [BindNever] — этот параметр будет всегда пропущен;
  • [BindRequired] — если параметр не был указан или был пустым, добавится ошибка связывания модели;
  • [FromServices] — используется, чтобы указать, что параметр должен быть предоставлен с применением внедрения зависимостей1.
  • [ModelBinder] — атрибут, позволяющий указать точный источник, переопределить имя параметра и указать тип привязки.

Последнее обновление : 17 апреля 2023 г.
Дата создания : 23 сентября 2022 г.

Комментарии

Комментарии