_Layout.chtmlファイルのappsettings.jsonから値を読み取る方法を理解できないようです。
このようなものだけではありませんか? @Configuration ["ApplicationInsights:InstrumentationKey"]
かみそりページを使用して、新しいMVCプロジェクトを作成しました。
fyi、私はmvc newbeeです-コードサンプルが大いに役立ちます。
.net core mvcでは、ビューの上部に次の2行を追加することにより、構成を挿入できます。
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
その後、次のように値にアクセスできます。
@Configuration.GetSection("ApplicationInsights")["InstrumentationKey"]
オプションパターンを使用する場合、次のようにビューに挿入できます。
@using Microsoft.Extensions.Options
@inject IOptions<ApplicationInsightsOptions>
ApplicationInsightsOptionsAccessor
@
{
var instrumentationKey =
ApplicationInsightsOptionsAccessor.Value.InstrumentationKey;
}
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