Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На заметку! При обновлении своих представлений с целью добавления ссылок на пакетированные файлы среда Visual Studio сообщит о том, что они не существуют. Не переживайте, все будет визуализироваться из кеша.
Обновление _Viewlmports.cshtml
На финальном шаге в систему добавляются вспомогательные функции дескрипторов WebOptimizer. Они работают точно так же, как вспомогательные функции дескрипторов
asp-append-version
_ViewImports.cshtml
@addTagHelper *, WebOptimizer.Core
Шаблон параметров в ASP.NET Core
Шаблон параметров обеспечивает доступ сконфигурированных классов настроек к другим классам через внедрение зависимостей. Конфигурационные классы могут быть внедрены в другой класс с применением одной их версий
IOptions<T>
IOptions
Добавление информации об автодилере
На автомобильном сайте должна отображаться информация об автодилере, которая обязана быть настраиваемой без необходимости в повторном развертывании всего сайта, чего можно достичь с использованием шаблона параметров. Начните с добавления информации об автодилере в файл
appsettings.json
{
"Logging": {
"MSSqlServer": {
"schema": "Logging",
"tableName": "SeriLogs",
"restrictedToMinimumLevel": "Warning"
}
},
"ApplicationName": "AutoLot.MVC",
"AllowedHosts": "*",
<b> "DealerInfo": {</b>
<b> "DealerName": "Skimedic's Used Cars",</b>
<b> "City": "West Chester",</b>
<b> "State": "Ohio"</b>
<b> }</b>
}
Далее понадобится создать модель представления для хранения информации об автодилере. Добавьте в каталог
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<b>([FromServices] IOptionsMonitor<DealerInfo> dealerMonitor)</b>
<b>{</b>
<b> var vm = dealerMonitor.CurrentValue;</b>
<b> return View(vm);</b>
}
Когда класс сконфигурирован в коллекции служб и добавлен в контейнер DI, его можно извлечь с использованием шаблона параметров. В рассматриваемом примере
OptionsMonitor
DealerInfo
CurrentValue
DealerInfo
DealerInfo
Index.cshtml
Обновите представление
Index.cshtml
ViewsHome
DealerInfo
@model AutoLot.Mvc.Models.DealerInfo