web-dev-qa-db-fra.com

Comment lire appsettings.json dans mon _layout.cshtml

Je n'arrive pas à comprendre comment lire les valeurs de appsettings.json dans mon fichier _Layout.chtml.

N'est-ce pas simplement disponible, quelque chose comme ceci? @ Configuration ["ApplicationInsights: InstrumentationKey"]

J'ai créé un nouveau projet MVC en utilisant des pages de rasoir.

fyi, je suis un newbee mvc - les exemples de code aident beaucoup.

8
user3693957

Dans .net core mvc, vous pouvez injecter la configuration en ajoutant les deux lignes suivantes en haut de votre vue:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

Vous pouvez alors accéder à la valeur comme ceci:

@Configuration.GetSection("ApplicationInsights")["InstrumentationKey"]
15
René

Si vous utilisez le modèle d'options, vous pouvez les insérer dans votre vue de la manière suivante:

@using Microsoft.Extensions.Options
@inject IOptions<ApplicationInsightsOptions> 
ApplicationInsightsOptionsAccessor
@
{
   var instrumentationKey = 
        ApplicationInsightsOptionsAccessor.Value.InstrumentationKey;
}

Modèle d'options dans ASP.NET Core

0
toddmillernyc

À l'aide de ActionFilters, vous pouvez interrompre la demande et ajouter les variables de configuration, par exemple, à la ViewBag afin qu'elle soit accessible à partir des vues ou du fichier _Layout.cshtml.

Par exemple, si la section de configuration suivante se trouve dans votre appsettings.json

{
    "MyConfig": {
        "MyValue": "abc-def"
    }
}

Dans le code MyConfig.cs serait:

public class MyConfig
{
    public string MyValue{ get; set; }
}

Commencez par créer un ActionFilter très simple, dérivé de IAsyncActionFilter, comme suit:

public class SampleActionFilter : IAsyncActionFilter
{
    private MyConfig _options;
    public SampleActionFilter(IConfiguration configuration)
    {

        _options = new MyConfig();
        configuration.Bind(_options);
    }

    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        ((Microsoft.AspNetCore.Mvc.Controller)context.Controller).ViewBag.MyConfig = _options;
        await next();
    }
}

Plus tard dans la méthode Startup.ConfigureServices, remplacez services.AddMvc par ce qui suit:

public void ConfigureServices(IServiceCollection services)
{

    //..........

    services.AddMvc(options=>
    {
        options.Filters.Add(new SampleActionFilter(
            Configuration.GetSection("MyConfig")
        ));
    });

    //..........

}

Pour accéder aux valeurs simplement dans la vue _Layout.cshtml ou une autre, vous pouvez taper:

@ViewBag.MyConfig.MyValue
0
Amer Sawan