web-dev-qa-db-ja.com

_layout.cshtmlのappsettings.jsonの読み方

_Layout.chtmlファイルのappsettings.jsonから値を読み取る方法を理解できないようです。

このようなものだけではありませんか? @Configuration ["ApplicationInsights:InstrumentationKey"]

かみそりページを使用して、新しいMVCプロジェクトを作成しました。

fyi、私はmvc newbeeです-コードサンプルが大いに役立ちます。

15
user3693957

.net core mvcでは、ビューの上部に次の2行を追加することにより、構成を挿入できます。

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

その後、次のように値にアクセスできます。

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

オプションパターンを使用する場合、次のようにビューに挿入できます。

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

ASP.NET Coreのオプションパターン

0
toddmillernyc

ActionFiltersを使用すると、要求を中断し、おそらくViewBagに構成変数を追加して、ビューまたは_Layout.cshtmlファイルからアクセスできるようにすることができます。

たとえば、次の構成セクションがappsettings.json内にある場合

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

コードではMyConfig.csは次のようになります。

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

最初に、次のようにIAsyncActionFilterから派生する非常に単純なActionFilterを作成します。

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();
    }
}

後でStartup.ConfigureServicesメソッドでservices.AddMvcを次のように変更します。

public void ConfigureServices(IServiceCollection services)
{

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

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

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

}

単に_Layout.cshtmlまたは他のビューで値にアクセスするには、次のように入力します。

@ViewBag.MyConfig.MyValue
0
Amer Sawan