Чтение онлайн

ЖАНРЫ

Язык программирования C#9 и платформа .NET5
Шрифт:

На автомобильном сайте должна отображаться информация об автодилере, которая обязана быть настраиваемой без необходимости в повторном развертывании всего сайта, чего можно достичь с использованием шаблона параметров. Начните с добавления информации об автодилере в файл

appsettings.json
:

{

"Logging": {

"MSSqlServer": {

"schema": "Logging",

"tableName": "SeriLogs",

"restrictedToMinimumLevel": "Warning"

}

},

"ApplicationName": "AutoLot.MVC",

"AllowedHosts": "*",

"DealerInfo": {

"DealerName": "Skimedic's Used Cars",

"City": "West Chester",

"State": "Ohio"

}

}

Далее

понадобится создать модель представления для хранения информации об автодилере. Добавьте в каталог
Models
проекта
AutoLot.Mvc
новый файл класса по имени
DealerInfo.cs
со следующим содержимым:

namespace AutoLot.Mvc.Models

{

public class DealerInfo

{

public string DealerName { get; set; }

public string City { get; set; }

public string State { get; set; }

}

}

На заметку! Конфигурируемый класс должен иметь открытый конструктор без параметров и не быть абстрактным. Стандартные значения можно устанавливать в свойствах класса.

Метод

Configure
интерфейса
IServiceCollection
сопоставляет раздел конфигурационных файлов с конкретным типом. Затем этот тип может быть внедрен в классы и представления с применением шаблона параметров. Откройте файл
Startup.cs
и добавьте в него показанный ниже оператор
using
:

using AutoLot.Mvc.Models;

Перейдите к методу

ConfigureServices
и поместите в него следующую строку кода:

services.Configure<DealerInfo>(Configuration.GetSection(nameof(DealerInfo)));

Откройте файл

HomeController.cs
и добавьте в него такой оператор
using
:

using Microsoft.Extensions.Options;

Затем модифицируйте метод

Index
, как продемонстрировано далее:

[Route("/")]

[Route("/[controller]")]

[Route("/[controller]/[action]")]

[HttpGet]

public IActionResult Index([FromServices] IOptionsMonitor<DealerInfo> dealerMonitor)

{

var vm = dealerMonitor.CurrentValue;

return View(vm);

}

Когда

класс сконфигурирован в коллекции служб и добавлен в контейнер DI, его можно извлечь с использованием шаблона параметров. В рассматриваемом примере
OptionsMonitor
будет читать конфигурационный файл, чтобы создать экземпляр класса
DealerInfo
. Свойство
CurrentValue
получает экземпляр
DealerInfo
, созданный из текущего файла настроек (даже если файл изменялся после запуска приложения). Затем экземпляр
DealerInfo
передается представлению
Index.cshtml
.

Обновите представление

Index.cshtml
, расположенное в каталоге
Views\Home
, чтобы оно было строго типизированным для класса
DealerInfo
и отображало свойства модели:

@model AutoLot.Mvc.Models.DealerInfo

@{

ViewData["Title"] = "Home Page";

}

<div class="text-center">

<h1 class="display-4">Welcome to @Model.DealerName</h1>

<p class="lead">Located in @Model.City, @Model.State

</div>

На заметку! За дополнительными сведениями о шаблоне параметров в ASP.NET Core обращайтесь в документацию по ссылке

https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/configuration/options
.

Создание оболочки службы

Вплоть до этого момента в приложении

AutoLot.Mvc
применялся уровень доступа к данным напрямую. Еще один подход предусматривает использование службы
AutoLot.Api
, позволяя ей обрабатывать весь доступ к данным.

Обновление конфигурации приложения

Конечные точки приложения

AutoLot.Api
будут варьироваться на основе среды. Скажем, при разработке на вашей рабочей станции базовый URI выглядит как
https://localhost:5021
. В промежуточной среде им может быть
https://mytestserver.com
. Осведомленность о среде в сочетании с обновленной конфигурационной системой (представленной в главе 29) будут применяться для добавления разных значений.

Файл

appsettings.Development.json
добавит информацию о службе для локальной машины По мере того как код перемещается по разным средам, настройки будут обновляться в специфическом файле среды, чтобы соответствовать базовому URI и конечным точкам для этой среды. В рассматриваемом примере вы обновляете только настройки для среды
Development
. Откройте файл
appsettings.Development.json
и модифицируйте его следующим образом (изменения выделены полужирным):

Поделиться с друзьями: