Содержание
- 2. Вводные понятия Razor Объект ViewResult Передача данных в представление Модель представления Файлы _ViewImports.cshtml и _ViewStart.cshtml Мастер-страницы
- 3. Понятие контроллера Центральным звеном в архитектуре ASP.NET Core MVC является контроллер. При получении запроса система маршрутизации
- 4. Именование контроллера При использовании контроллеров существуют некоторые условности. Во-первых, в проекте контроллеры помещаются в каталог Controllers.
- 5. Создание контроллера Если нам нужен еще один контроллер, то мы можем добавить папку Controllers новый класс,
- 6. Структура контроллера Контроллер, как и любой класс на языке C#, может иметь поля, свойства, методы. По
- 7. Структура контроллера Не все методы контроллера являются действиями. Контроллер также может иметь непубличные методы - такие
- 8. Атрибуты NonController Возможно, сопоставление по умолчанию бывает не всегда удобно. Например, у нас есть класс в
- 9. Атрибуты NonAction Аналогично, если мы хотим, чтобы какой-либо публичный метод контроллера не рассматривался как действие, то
- 10. Атрибуты ActionName Атрибут [ActionName] позволяет для метода задать другое имя действия. Например: [ActionName("Welcome")] public string Hello()
- 11. Типы запросов Пример: [HttpGet] public IActionResult Buy(int id) { Order order = new Order { PhoneId
- 12. Типы запросов Запрос: GET /wiki/страница HTTP/1.1 Host: ru.wikipedia.org User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5)
- 13. Типы запросов Ответ: HTTP/1.1 200 OK Date: Wed, 11 Feb 2009 11:20:59 GMT Server: Apache X-Powered-By:
- 14. Типы запросов Несмотря на то, что здесь два разных метода, но они в соответствии с именем
- 15. Передача данных в контроллер Вместе с запросом приложению могут приходить различные данные. И чтобы получить эти
- 16. Передача данных в контроллер Система привязки MVC, которую мы позже рассмотрим, сопоставляет параметры запроса и параметры
- 17. Передача сложных объектов Хотя строка запроса преимущественно используется для передачи данных примитивных типов, но мы также
- 18. Передача сложных объектов Получение объекта в методе контроллера: public class HomeController : Controller { public string
- 19. Передача сложных объектов Класс Geometry определяет два свойства и метод для подсчета площади. И теперь в
- 20. Передача массивов Допустим, метод принимает массив чисел: public string Sum(int[] nums) { return $"Сумма чисел равна
- 21. Передача массивов Теперь изменим метод Sum, чтобы он принимал массив объектов ранее созданного класса Geometry: public
- 22. Получение данных из контекста запроса Параметры представляют самый простой способ получения данных, но в действительности нам
- 23. Результаты действий При обращении к веб-приложению, как правило, пользователь ожидает получить некоторый ответ, например, в виде
- 24. Результаты действий Пользователь передает методу некоторые значения и ответ на запрос видит в своем браузере строку
- 25. Результаты действий Когда метод контроллера возвращает ответ, то инфраструктура MVC определяет, в каком формате этот ответ
- 26. Результаты действий Но в большинстве случаев мы будем иметь дело не с типом string, а с
- 27. Результаты действий ASP.NET MVC Core итак предоставляет довольно большое количество классов результатов для самых различных ситуаций:
- 28. Результаты действий – отправка файлов FileResult: является базовым классом для всех объектов, которые пишут набор байтов
- 29. Результаты действий – статусные коды StatusCodeResult: результат действия, который возвращает клиенту определенный статусный код HTTP UnauthorizedResult:
- 30. Результаты действий – статусные коды OkResult: производный от StatusCodeResult. Возвращает статусный код 200, который уведомляет об
- 31. Результаты действий JsonResult: возвращает в качестве ответа объект или набор объектов в формате JSON PartialViewResult: производит
- 32. Результаты действий - ContentResult ContentResult отправляет клиенту ответ в виде строки. Так, следующий пример: public string
- 33. Результаты действий - JsonResult Одним из наиболее популярных в наше время форматов хранения и передачи данных
- 34. Результаты действий - JsonResult public class User { public string Name { get; set; } public
- 35. Результаты действий - JsonResult При обращении к методу из адресной стоки браузера веб-браузер выведет полное описание
- 36. Переадресация В ASP.NET Core MVC для создания переадресации используются классы RedirectResult, LocalRedirectResult, RedirectToActionResult и RedirectToRouteResult. Протокол
- 37. Временная переадресация В обоих случаях для создания переадресации может использоваться объект RedirectResult, однако метод, возвращающий данный
- 38. Постоянная переадресация Для постоянной переадресации подобным образом используется метод RedirectPermanent. Принцип его применения тот же самый:
- 39. Переадресация на метод контроллера Для создания переадресации на определенный метод контроллера используется объект RedirectToActionResult. Опять же
- 40. Переадресация на метод контроллера public class HomeController : Controller { public IActionResult Index() { return RedirectToAction("Square",
- 41. Отправка файлов Для отправки клиенту файлов предназначен абстрактный класс FileResult, функционал которого реализуется в классах-наследниках: FileContentResult:
- 42. Загрузка файла по пути. PhysicalFileResult Допустим, у нас в проекте имеется папка Files, в которой находится
- 43. Загрузка массива байтов Похожим образом работает и класс FileContentResult, только используется метод File(), а вместо имени
- 44. Отправка потока Если мы хотим возвратить объект FileStreamResult, то в качестве первого аргумента в методе File
- 45. VirtualFileResult VirtualFileResult работает похожим образом, только возвращает файл по виртуальному пути. Здесь надо учитывать, что по
- 46. Отправка файлов Во всех вышеперечисленных случаях использование имени файла в качестве третьего параметра метода File/PhysicalFile необязательно.
- 47. Переопределение контроллеров Как правило, для создания контроллера достаточно унаследовать свой класс от базового класса Controller. Однако
- 48. Контекст контроллера Кроме тех данных, которые передаются через параметры метода, в контроллере мы можем получить различную
- 49. Контекст контроллера Для получения информации о запросе нас прежде всего будет интересовать свойство HttpContext, которое представляет
- 50. Контекст контроллера Объект HttpContext инкапсулирует всю информацию о запросе. В частности, он определяет следующие свойства: Request:
- 51. Контекст контроллера – Request Свойство HttpContext.Request представляет объект HttpRequest и предоставляет разнообразную информацию о запросе. Этот
- 52. Контекст контроллера – Request Вся основная информация нам доступна из заголовков. Например, получим все имеющиеся заголовки
- 53. Контекст контроллера – Request Получим значения определенных заголовков: string userAgent = Request.Headers["User-Agent"].ToString(); string referer = Request.Headers["Referer"].ToString();
- 54. Контекст контроллера – Response Свойство HttpContext.Response представляет объект HttpResponse и позволяет управлять ответом на запрос, в
- 56. Скачать презентацию