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

на главную - закладки

Жанры

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

Обновление _Viewlmports.cshtml

На финальном шаге в систему добавляются вспомогательные функции дескрипторов WebOptimizer. Они работают точно так же, как вспомогательные функции дескрипторов

asp-append-version
, описанные ранее в главе, но делают это автоматически для всех пакетированных и минифицированных файлов. Поместите в конец файла
_ViewImports.cshtml
следующую строку:

@addTagHelper *, WebOptimizer.Core

Шаблон

параметров в ASP.NET Core

Шаблон параметров обеспечивает доступ сконфигурированных классов настроек к другим классам через внедрение зависимостей. Конфигурационные классы могут быть внедрены в другой класс с применением одной их версий

IOptions<T>
. В табл. 31.6 кратко описан ряд версий интерфейса
IOptions
.

Добавление информации об автодилере

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

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>

Поделиться:
Популярные книги

Черный дембель. Часть 5

Федин Андрей Анатольевич
5. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 5

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Жребий некроманта 2

Решетов Евгений Валерьевич
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Жребий некроманта 2

Охота на разведенку

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
6.76
рейтинг книги
Охота на разведенку

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Надуй щеки! Том 3

Вишневский Сергей Викторович
3. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки! Том 3

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»