Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
564 Кб
Скачать
☆
  1. Способы получения данных контроллером. Стандартный привязчик DefaultModelBinder. Примеры.

Контроллеры часто нуждаются в доступе к данным из входящего запроса, таким как значения строки запроса, значения формы и параметры, извлеченные из URL системой маршрутизации.

Рассмотрим два способа доступа к таким данным:

  1. извлечение данных из набора объектов контекста (1);

  2. передача данных в качестве параметров методу действия (2).

(1) Набор свойств для доступа к информации, касающейся запроса:

  • Request,

  • Response,

  • RouteData,

  • HttpContext,

  • Server.

Каждое перечисленное свойство отвечает за конкретный аспект запроса и извлекает определенный тип данных из экземпляра ControllerContext для запроса.

Метод действия может использовать любой из этих объектов контекста для получения информации о запросе, как демонстрируется в примере

public ActionResult ActionMethod()

{

// Получить доступ к разнообразным свойствам из объектов контекста

string userName = User.Identity.Name;

string serverName = Server.MachineName;

string clientIP = Request.UserHostAddress;

DateTime dateStamp = HttpContext.Timestamp;

// Извлечь отправленные данные из Request.Form

string oldProductName = Request.Form["OldName"];

string newProductName = Request. Form ["NewName"];

// ...

return View();

}

(2) Методы действий могут принимать параметры. По сравнению с извлечением значений из объектов контекста это более аккуратный способ получения входных данных. Он упрощает восприятие кода методов действий.

Например, предположим, имеется следующий метод действия, использующий объекты контекста: Его можно переписать так, чтобы в нем применялись параметры: Инфраструктура MVC Framework предоставит значения для параметров метода действия, автоматически проверив объекты контекста и свойства, в том числе Request.QueryString, Request.Form и RouteData.Values. Имена параметров трактуются как нечувствительные к регистру символов, поэтому параметр метода действия по имени city может получить значение, например, из Request.Form["City"].

public ActionResult WeatherForecast()

{

string city = (string)RouteData.Values["city"];

DateTime forDate = DateTime.Parse(Request.Form["forDate"]);

// реализовать прогноз погоды

return View();

}

// ...

public ActionResult WeatherForecast(string city, DateTime forDate)

{

// реализовать прогноз погоды

return View();

}

// ...

Базовый класс Controller получает значения для параметров методов действий с использованием компонентов MVC Framework, называемых поставщиками значений и связывателями моделей. Поставщики значений представляют набор элементов данных, доступных контроллеру. Существуют встроенные поставщики значений, которые производят выборку элементов из Request.Form, Request.QueryString, Request.Files RouteData.Values. Эти значения затем передаются связывателям моделей, которые пытаются отобразить их на типы параметров, принимаемых методами действий. Стандартные связыватели моделей могут создавать и заполнять объекты любого типа .NET, включая коллекции и специальные типы, специфичные для проектов.

Привязчик DefaultModelBinder используется по умолчанию, если для данного типа не определен другой привязчик.

Чтобы получить значения для параметров, привязчик

  1. просматривает следующие объекты строго по порядку:

    • Request.Form. В данном случае привязчик получает значения, отправленные с помощью форм

    • RouteData.Values. Здесь получает значения с помощью маршрутов приложения

    • Request.QueryString. В данном случае привязчик извлекает значения из строки запроса

    • Request.Files. В данном случае используются загруженные на сервер файлы

  • Если в одном из этих объектов будет обнаружен соответствующий элемент, то на нем поиск прекращается, а параметру передается найденное значение.

  • Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]