Конфигурирование начинается с создания политики CORS и добавления ее в коллекцию служб. Политика имеет имя (оно будет использоваться в методе Configure()
), за которым следуют правила. Далее будет сознана политика по имени AllowAll
, разрешающая все. Добавьте в метод ConfigureServices()
класса Startup
следующий код:
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder
.AllowAnyHeader()
.AllowAnyMethod()
.AllowAnyOrigin();
});
});
Добавление политики CORS в конвейер обработки HTTP
Наконец, политику CORS необходимо добавить в конвейер обработки HTTP. Поместите между вызовами арр. UseRouting()
и арр.UseEndpoints()
в методе Configure()
класса Startup
показанную ниже строку (выделенную полужирным):
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
ApplicationDbContext context)
{
...
// Включить маршрутизацию.
app.UseRouting();
// Добавить политику CORS.
app.UseCors("AllowAll");
// Включить проверки авторизации.
app.UseAuthorization();
...
}
Резюме
В главе вы продолжили изучение ASP.NET Core. Сначала вы узнали о возвращении данных JSON из методов действий, после чего взглянули на атрибут ApiController
и его влияние на контроллеры API. Затем вы обновили общую реализацию Swashbuckle, чтобы включить XML-документацию приложения и информацию из атрибутов методов действий.
Далее был построен базовый контроллер, содержащий большинство функциональности приложения. После этого в проект были добавлены производные контроллеры, специфичные для сущностей. В заключение был добавлен фильтр исключений уровня приложения и поддержка запросов между источниками.
В следующей главе вы завершите построение веб-приложения ASP.NET Core, т.е. AutoLot.Mvc
.
Глава 31
Создание приложений MVC с помощью ASP.NET Core
В главе 29 была заложена основа ASP.NET Core, а в главе 30 вы построили службу REST. В этой главе вы будете создавать веб-приложение с использованием паттерна МУС. Все начинается с помещения "V" обратно в "МУС".
На заметку! Исходный код, рассматриваемый в этой главе, находится в папке Chapter_31
внутри хранилища GitHub для настоящей книги. Вы также можете продолжить работу с решением, начатым в главе 29 и обновленным в главе 30.
Введение в представления ASP.NET Core
При построении служб ASP.NET Core были задействованы только части "М " (модели) и "С" (контроллеры ) паттерна МУС. Пользовательский интерфейс создается с применением части "V", т.е. представлений паттерна МУС. Представления строятся с использованием кода HTML, JavaScript, CSS и Razor. Они необязательно имеют страницу базовой компоновки и визуализируются из метода действия контроллера или компонента представления. Если вы имели дело с классической инфраструктурой ASP.NET МУС, то все должно выглядеть знакомым.
Экземпляры класса ViewResult и методы действий
Как кратко упоминалось в главе 29, объекты результатов ViewResult
и PartialView
являются экземплярами класса ActionResult
, которые возвращаются из методов действий с применением вспомогательных методов класса Controller
. Класс PartialViewResult
спроектирован для визуализации внутри другого представления и не использует страницу компоновки, тогда как класс ViewResult
обычно визуализируется в сочетании со страницей компоновки.
По соглашению, принятому в ASP.NET Core (что было и в ASP.NET МУС), экземпляр View или PartialView визуализирует файл *.cshtml
с таким же именем, как у метода. Представление должно находиться либо в каталоге с именем контроллера (без суффикса Controller
), либо в каталоге Shared
(оба расположены внутри родительского каталога Views
).
Например, следующий код будет визуализировать представление SampleAction.cshtml
, находящееся в каталоге Views\Sample
или Views\Shared
:
[Route("[controller]/[action]")]
public class SampleController: Controller
{
public ActionResult SampleAction()
{
return View();
}
}
На заметку! Первым производится поиск в каталоге с именем контроллера. Если представление там не обнаружено, то поиск выполняется в каталоге Shared
. Если оно по-прежнему не найдено, тогда генерируется исключение.