ASP.NET Core MVC с примерами на C# для профессионалов [7-е изд.]
9785604139431
228
107
19MB
Russian
Pages 1007 с.
[1010]
Year 2019
Report DMCA / Copyright
DOWNLOAD DJVU FILE
Table of contents :
Содержание
Об авторе
I. Введение в инфраструктуру ASP.NET Core MVC 2
1. Основы ASP.NET Core MVC
История развития ASP.NET Core MVC
ASP.NET Web Forms
Первоначальная инфраструктура MVC Framework
Обзор ASP.NET Core
Что нового в ASP.NET Core MVC 2
Основные преимущества ASP.NET Core MVC
Что необходимо знать
Какова структура книги
Часть I. Введение в инфраструктуру ASP.NET Core MVC
Часть II. Подробные сведения об инфраструктуре ASP.NET Core MVC
Где можно получить код примеров
Резюме
2. Ваше первое приложение MVC
Установка Visual Studio
Установка .NET Core 2.0 SDK
Создание нового проекта ASP.NET Core MVC
Добавление контроллера
Понятие маршрутов
Визуализация веб-страниц
Создание и визуализация представления
Добавление динамического вывода
Создание простого приложения для ввода данных
Предварительная настройка
Проектирование модели данных
Создание второго действия и строго типизированного представления
Ссылка на методы действий
Построение формы
Получение данных формы
Добавление проверки достоверности
Стилизация содержимого
Резюме
3. Паттерн, проекты и соглашения MVC
История создания MVC
Особенности паттерна MVC
Понятие моделей
Понятие контроллеров
Понятие представлений
Реализация паттерна MVC в ASP.NET Core
Сравнение MVC с другими паттернами
Паттерн “Интеллектуальный пользовательский интерфейс”
Проекты ASP.NET Core MVC
Создание проекта
Соглашения в проекте MVC
Резюме
4. Важные функциональные возможности языка C
Подготовка проекта для примера
Включение ASP.NET Core MVC
Создание компонентов приложения MVC
Использование null-условной операции
Связывание в цепочки null-условных операций
Комбинирование null-условной операции и операции объединения с null
Использование автоматически реализуемых свойств
Использование инициализаторов автоматически реализуемых свойств
Создание автоматически реализуемых свойств только для чтения
Использование интерполяции строк
Использование инициализаторов объектов и коллекций
Использование инициализатора индексированной коллекции
Сопоставление с образцом
Сопоставление с образцом в операторах switch
Использование расширяющих методов
Применение расширяющих методов к интерфейсу
Создание фильтрующих расширяющих методов
Использование лямбда-выражений
Определение функций
Использование методов и свойств в форме лямбда-выражений
Использование автоматического выведения типа и анонимных типов
Использование анонимных типов
Использование асинхронных методов
Работа с задачами напрямую
Применение ключевых слов async и await
Получение имен
Резюме
5. Работа с Razor
Подготовка проекта для примера
Определение модели
Создание контроллера
Создание представления
Работа с объектом модели
Использование файла импортирования представлений
Работа с компоновками
Создание компоновки
Применение компоновки
Использование файла запуска представления
Использование выражений Razor
Вставка значений данных
Установка значений атрибутов
Использование условных операторов
Проход по содержимому массивов и коллекций
Резюме
6. Работа с Visual Studio
Подготовка проекта для примера
Создание модели
Создание контроллера и представления
Управление программными пакетами
Инструмент NuGet
Инструмент Bower
Итеративная разработка
Внесение изменений в представления Razor
Внесение изменений в классы C
Использование средства Browser Link
Подготовка файлов JavaScript и CSS для развертывания
Включение доставки статического содержимого
Добавление в проект статического содержимого
Обновление представления
Пакетирование и минификация в приложениях MVC
Резюме
7. Модульное тестирование приложений MVC
Подготовка проекта для примера
Включение встроенных вспомогательных функций дескрипторов
Добавление действий к контроллеру
Создание формы для ввода данных
Обновление представления Index
Модульное тестирование приложений MVC
Создание проекта модульного тестирования
Создание ссылки на проект
Изолирование компонентов для модульного тестирования
Улучшение модульных тестов
Параметризация модульного теста
Улучшение фиктивных реализаций
Резюме
8. SportsStore: реальное приложение
Начало работы
Создание проекта MVC
Создание проекта модульного тестирования
Проверка и запуск приложения
Начало работы с моделью предметной области
Создание хранилища
Создание фиктивного хранилища
Регистрация службы хранилища
Отображение списка товаров
Добавление контроллера
Добавление и конфигурирование представления
Установка стандартного маршрута
Запуск приложения
Подготовка базы данных
Установка пакета инструментов командной строки Entity Framework Core
Создание классов базы данных
Создание класса хранилища
Определение строки подключения
Конфигурирование приложения
Создание миграции базы данных
Создание начальных данных
Добавление поддержки разбиения на страницы
Отображение ссылок на страницы
Улучшение URL
Стилизация содержимого
Установка пакета Bootstrap
Применение стилей Bootstrap к компоновке
Создание частичного представления
Резюме
9. SportsStore: навигация
Добавление навигационных элементов управления
Фильтрация списка товаров
Улучшение схемы URL
Построение меню навигации по категориям
Корректировка счетчика страниц
Построение корзины для покупок
Определение модели корзины
Создание кнопок добавления в корзину
Включение поддержки сеансов
Реализация контроллера для корзины
Отображение содержимого корзины
Резюме
10. SportsStore: завершение построения корзины для покупок
Усовершенствование модели корзины с помощью службы
Создание класса корзины, осведомленного о хранилище
Регистрация службы
Упрощение контроллера Cart
Завершение функциональности корзины
Удаление элементов из корзины
Добавление виджета с итоговой информацией по корзине
Отправка заказов
Создание класса модели
Добавление реализации процесса оплаты
Реализация обработки заказов
Завершение построения контроллера Order
Отображение сообщений об ошибках проверки достоверности
Отображение итоговой страницы
Резюме
11. SportsStore: администрирование
Управление заказами
Расширение модели
Добавление действий и представления
Добавление средств управления каталогом
Создание контроллера CRUD
Реализация представления списка
Редактирование сведений о товарах
Создание новых товаров
Удаление товаров
Резюме
12. SportsStore: защита и развертывание
Защита средств администрирования
Создание базы данных Identity
Применение базовой политики авторизации
Создание контроллера Account и представлений
Тестирование политики безопасности
Развертывание приложения
Создание баз данных
Подготовка приложения
Применение миграций к базам данных
Управление начальным заполнением баз данных
Развертывание приложения
Резюме
13. Работа с Visual Studio Code
Настройка среды разработки
Установка Node.js
Проверка установки Node
Установка Git
Проверка установки Git
Установка Bower
Установка .NET Core
Проверка установки .NET Core
Установка Visual Studio Code
Проверка установки Visual Studio Code
Установка расширения C# для Visual Studio Code
Создание проекта ASP.NET Core
Подготовка проекта с помощью Visual Studio Code
Управление пакетами клиентской стороны
Конфигурирование приложения
Построение и запуск проекта
Воссоздание приложения PartyInvites
Создание модели и хранилища
Создание базы данных
Создание контроллеров и представлений
Модульное тестирование в Visual Studio Code
Создание модульного теста
Прогон тестов
Резюме
II. Подробные сведения об инфраструктуре ASP.NET Core MVC 2
14. Конфигурирование приложений
Подготовка проекта для примера
Конфигурирование проекта
Добавление пакетов в проект
Добавление пакетов инструментов в проект
Класс Program
Анализ деталей конфигурации
Класс Startup
Службы ASP.NET
Промежуточное программное обеспечение ASP.NET
Особенности вызова метода Configure()
Добавление оставшихся компонентов промежуточного программного обеспечения
Конфигурирование приложения
Создание конфигурационного файла JSON
Использование данных конфигурации
Конфигурирование регистрации в журнале
Конфигурирование внедрения зависимостей
Конфигурирование служб MVC
Работа со сложными конфигурациями
Создание разных внешних конфигурационных файлов
Создание разных методов конфигурирования
Создание разных классов конфигурирования
Резюме
15. Маршрутизация URL
Подготовка проекта для примера
Создание класса модели
Создание примеров контроллеров
Создание представления
Введение в шаблоны URL
Создание и регистрация простого маршрута
Определение стандартных значений
Определение встраиваемых стандартных значений
Использование статических сегментов URL
Определение специальных переменных сегментов
Использование специальных переменных в качестве параметров метода действия
Определение необязательных сегментов URL
Определение маршрутов переменной длины
Ограничение маршрутов
Ограничение маршрута с использованием регулярного выражения
Использование ограничений на основе типов и значений
Объединение ограничений
Определение специального ограничения
Использование маршрутизации с помощью атрибутов
Подготовка для маршрутизации с помощью атрибутов
Применение маршрутизации с помощью атрибутов
Применение ограничений к маршрутам
Резюме
16. Дополнительные возможности маршрутизации
Подготовка проекта для примера
Генерирование исходящих URL в представлениях
Генерирование исходящих ссылок
Генерирование URL (без ссылок)
Генерирование URL в методах действий
Настройка системы маршрутизации
Изменение конфигурации системы маршрутизации
Создание специального класса маршрута
Применение специального класса маршрута
Маршрутизация на контроллеры MVC
Работа с областями
Создание области
Создание маршрута для области
Заполнение области
Генерирование ссылок на действия в областях
Полезные советы относительно схемы URL
Делайте URL чистыми и понятными человеку
GET и POST: выбор правильного запроса
Резюме
17. Контроллеры и действия
Подготовка проекта для примера
Подготовка представлений
Понятие контроллеров
Создание контроллеров
Создание контроллеров POCO
Использование базового класса Controller
Получение данных контекста
Получение данных из объектов контекста
Использование параметров метода действия
Генерирование ответа
Генерирование ответа с использованием объекта контекста
Понятие результатов действий
Генерирование HTML-ответа
Передача данных из метода действия в представление
Выполнение перенаправления
Возвращение разных типов содержимого
Реагирование с помощью содержимого файлов
Возвращение ошибок и кодов HTTP
Другие классы результатов действий
Резюме
18. Внедрение зависимостей
Подготовка проекта для примера
Создание модели и хранилища
Создание контроллера и представления
Создание проекта модульного тестирования
Создание слабо связанных компонентов
Исследование сильно связанных компонентов
Введение в средство внедрения зависимостей ASP.NET
Подготовка к внедрению зависимостей
Конфигурирование поставщика служб
Модульное тестирование контроллера с зависимостью
Использование цепочек зависимостей
Использование внедрения зависимостей для конкретных типов
Жизненные циклы служб
Использование переходного жизненного цикла
Использование жизненного цикла, ограниченного областью действия
Использование жизненного цикла одиночки
Использование внедрения в действия
Использование атрибутов внедрения в свойства
Запрашивание объекта реализации вручную
Резюме
19. Фильтры
Подготовка проекта для примера
Включение SSL
Создание контроллера и представления
Использование фильтров
Понятие фильтров
Получение данных контекста
Использование фильтров авторизации
Создание фильтра авторизации
Использование фильтров действий
Создание фильтра действий
Создание асинхронного фильтра действий
Использование фильтров результатов
Создание фильтра результатов
Создание асинхронного фильтра результатов
Создание гибридного фильтра действий/результатов
Использование фильтров исключений
Создание фильтра исключений
Использование внедрения зависимостей для фильтров
Распознавание зависимостей в фильтрах
Управление жизненными циклами фильтров
Создание глобальных фильтров
Порядок применения фильтров и его изменение
Изменение порядка применения фильтров
Резюме
20. Контроллеры API
Подготовка проекта для примера
Создание модели и хранилища
Создание контроллера и представлений
Роль контроллеров REST
Проблема скорости
Проблема эффективности
Проблема открытости
Введение в REST и контроллеры API
Создание контроллера API
Тестирование контроллера API
Использование контроллера API в браузере
Форматирование содержимого
Стандартная политика содержимого
Согласование содержимого
Указание формата данных для действия
Получение формата данных из маршрута или строки запроса
Включение полного согласования содержимого
Получение разных форматов данных
Резюме
21. Представления
Подготовка проекта для примера
Создание специального механизма визуализации
Создание специальной реализации интерфейса IView
Создание реализации интерфейса IViewEngine
Регистрация специального механизма визуализации
Тестирование механизма визуализации
Работа с механизмом Razor
Подготовка проекта для примера
Прояснение представлений Razor
Добавление динамического содержимого к представлению Razor
Использование разделов компоновки
Использование частичных представлений
Добавление содержимого JSON в представления
Конфигурирование механизма Razor
Расширители местоположений представлений
Резюме
22. Компоненты представлений
Подготовка проекта для примера
Создание моделей и хранилищ
Создание контроллера и представлений
Конфигурирование приложения
Понятие компонентов представлений
Создание компонента представления
Создание компонентов представлений POCO
Наследование от базового класса ViewComponent
Понятие результатов компонентов представлений
Получение данных контекста
Создание асинхронных компонентов представлений
Создание гибридных классов контроллеров и компонентов представлений
Создание гибридных представлений
Применение гибридного класса
Резюме
23. Вспомогательные функции дескрипторов
Подготовка проекта для примера
Создание модели и хранилища
Создание контроллера, компоновки и представлений
Конфигурирование приложения
Создание вспомогательной функции дескриптора
Определение класса вспомогательной функции дескриптора
Регистрация вспомогательных функций дескрипторов
Использование вспомогательной функции дескриптора
Управление областью действия вспомогательной функции дескриптора
Усовершенствованные возможности вспомогательных функций дескрипторов
Создание сокращающих элементов
Вставка перед и после содержимого и элементов
Получение данных контекста представления и использование внедрения зависимостей
Работа с моделью представления
Согласование вспомогательных функций дескрипторов
Подавление выходного элемента
Резюме
24. Использование вспомогательных функций дескрипторов для форм
Подготовка проекта для примера
Переустановка представлений и компоновки
Работа с элементами form
Установка цели формы
Использование средства противодействия подделке
Работа с элементами input
Конфигурирование элементов input
Форматирование значений данных
Работа с элементами label
Работа с элементами select и option
Использование источника данных для заполнения элемента select
Генерирование элементов option из перечисления
Работа с элементами textarea
Вспомогательные функции дескрипторов для проверки достоверности форм
Резюме
25. Использование других встроенных вспомогательных функций дескрипторов
Подготовка проекта для примера
Использование вспомогательной функции дескриптора для среды размещения
Использование вспомогательных функций дескрипторов для JavaScript и CSS
Управление файлами JavaScript
Управление таблицами стилей CSS
Работа с якорными элементами
Работа с элементами img
Использование кеша данных
Установка времени истечения для кеша
Использование вариаций кеша
Использование URL, относительных к приложению
Резюме
26. Привязка моделей
Подготовка проекта для примера
Создание модели и хранилища
Создание контроллера и представления
Конфигурирование приложения
Понятие привязки моделей
Стандартные значения привязки
Привязка простых типов
Привязка сложных типов
Привязка массивов и коллекций
Привязка коллекций сложных типов
Указание источника данных привязки моделей
Выбор стандартного источника данных привязки
Использование заголовков в качестве источников данных привязки
Использование тел запросов в качестве источников данных привязки
Резюме
27. Проверка достоверности моделей
Подготовка проекта для примера
Создание модели
Создание контроллера
Создание компоновки и представлений
Необходимость в проверке достоверности модели
Явная проверка достоверности модели
Отображение пользователю ошибок проверки достоверности
Отображение сообщений об ошибках проверки достоверности
Отображение сообщений об ошибках проверки достоверности на уровне свойств
Отображение сообщений об ошибках проверки достоверности на уровне модели
Указание правил проверки достоверности с помощью метаданных
Создание специального атрибута проверки достоверности для свойства
Выполнение проверки достоверности на стороне клиента
Выполнение удаленной проверки достоверности
Резюме
28. Введение в ASP.NET Core Identity
Подготовка проекта для примера
Создание контроллера и представления
Настройка ASP.NET Core Identity
Создание класса пользователя
Создание класса контекста базы данных
Конфигурирование настройки строки подключения к базе данных
Создание базы данных Identity
Использование ASP.NET Core Identity
Перечисление пользовательских учетных записей
Создание пользователей
Проверка паролей
Проверка деталей, связанных с пользователем
Завершение построения средств администрирования
Реализация возможности удаления
Реализация возможности редактирования
Резюме
29. Применение ASP.NET Core Identity
Подготовка проекта для примера
Аутентификация пользователей
Подготовка к реализации аутентификации
Добавление аутентификации пользователей
Тестирование аутентификации
Авторизация пользователей с помощью ролей
Создание и удаление ролей
Управление членством в ролях
Использование ролей для авторизации
Помещение в базу данных начальной информации
Резюме
30. Расширенные средства ASP.NET Core Identity
Подготовка проекта для примера
Добавление специальных свойств в класс пользователя
Подготовка миграции базы данных
Тестирование специальных свойств
Работа с заявками и политиками
Понятие заявок
Создание заявок
Использование политик
Использование политик для авторизации доступа к ресурсам
Использование сторонней аутентификации
Регистрация приложения в Google
Включение аутентификации Google
Резюме
31. Соглашения по модели и ограничения действий
Подготовка проекта для примера
Создание модели представления, контроллера и представления
Использование модели приложения и соглашений по модели
Модель приложения
Роль соглашений по модели
Создание соглашения по модели
Порядок применения соглашений по модели
Создание глобальных соглашений по модели
Использование ограничений действий
Подготовка проекта для примера
Ограничения действий
Создание ограничения действия
Распознавание зависимостей в ограничениях действий
Резюме
Предметный указатель