Делаю небольшое веб-приложение для работы с лаками для ногтей.
И нужно мне как-то визуально определять, работаю я в данный момент на продакшн версии сайта или на девелоперской, я обычно смотрю на внешний вид логотипа в шапке: на продакшене выглядит так
А dev версия выглядит так:
И сейчас это сделано через анализ адресной строки, в файле Views/Shared/_Layout.cshtml:
@functions{
private bool IsDevEnv()
{
return Context.Request.Host.Value.Contains("localhost");
}
}
....
@if (IsDevEnv())
{
Polish Hub
}
else
{
Polish Hub
}
Однако это не совсем то, что мне нужно: мне нужно проверять параметры sql server connection string, а не hostname сервера. (К сожалению, таковы особености appharbor'а по работе с core на текущий день - в классическом asp.net mvc нормально происходят замены переменных)
Как можно добраться до этих настроек (connection string)в asp.net core?
Можно ли как-то в view добраться до Configuration.GetConnectionString? Или, если нельзя, то с какого уровня определить переменную mode (prod/dev), чтобы пробрасывать её в layout страницы.
Ответ
До настроек во View можно добраться через @inject
Допустим у нас в appSettings.json написано такое
{
"SomeOption" : {
"SomeProp" : 1000
}
}
Создадим класс MyAppOptions и в нем создадим свойство с названием совпадающим с названием опции
public int SomeProp { get; set; }
Теперь перейдем к Startup.cs в нем у нас уже должно быть поле
private readonly IConfiguration _configuration;
которому присваивается значение через конструктор. Далее переходим в метод ConfigureServices(...) и добавляем такое
services.Configure
Теперь во View
@using Microsoft.Extensions.Options
@inject IOptions
@в нужном месте@
@options.Value.SomeProp
Комментариев нет:
Отправить комментарий