Как добавить параметры конфигурации в общую страницу _Layout.cshtml Razor - PullRequest
0 голосов
/ 26 января 2019

У нас есть это StartUp, как следует, получая значения из appsettings.json:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();

    var environment = Configuration["ApplicationSettings:Environment"];
}

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<AppSettings>(Configuration.GetSection("ApplicationSettings"));

    ...
}

И мы также модель под названием AppSettings

public class AppSettings
{
    public string Environment { get; set; }
    public string Version { get; set; }
}

Поскольку я работаю над /Pages/Shared/_Layout.cshtml, пытаясь внедрить эту версию в эту общую страницу, я не смог сделать подход, основанный на коде. Как это сделать?

ОБНОВЛЕНИЯ 1 -

Теоретически я мог бы сделать это, если это модель страницы:

public class _LayoutModel : PageModel
{
    private readonly AppSettings _appSettings;

    public string Version;
    public string Environment;

    public _LayoutModel(IOptions<AppSettings> appsettings)
    {
        _appSettings = appsettings.Value;
    }

    public void OnGet()
    {
        Environment = _appSettings.Environment;
        Version = _appSettings.Version;
    }
}

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Как и в Controller, вы также можете добавить свои сервисы в представление.

Вы можете использовать @inject, например:

@inject Microsoft.Extensions.Options.IOptions<AppSettings> AppSettingsOptions

или добавить@using Microsoft.Extensions.Options в _ViewImports.cs, а затем введите параметры в макете следующим образом:

@inject IOptions<AppSettings> AppSettingsOptions.

, после чего вы можете получить доступ к своим настройкам, например: @AppSettingsOptions.Value.Version.

0 голосов
/ 26 января 2019

вы можете получить доступ к вашим настройкам, используя ViewData в вашем файле _layout.cshtml.

В вашем файле _layout.cshtml

<title>Version : @ViewData["Version"] | Environment : @ViewData["Environment"]</title>

Но вы должны установить значение ViewData в.Файл cshtml всех страниц, которые вы публикуете в этом макете, как этот

@model YourPageModel
@{
    ViewData["Environment"] = Model.Environment;
    ViewData["Version"] = Model.Version;
    Layout = "/Pages/Shared/_Layout.cshtml";
}

Надеюсь, это поможет:)

...