Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 如何在my_layout.chtml中读取appsettings.json_Razor_Model View Controller_Configuration_Appsettings - Fatal编程技术网

Razor 如何在my_layout.chtml中读取appsettings.json

Razor 如何在my_layout.chtml中读取appsettings.json,razor,model-view-controller,configuration,appsettings,Razor,Model View Controller,Configuration,Appsettings,我似乎不知道如何从我的_Layout.chtml文件中的appsettings.json读取值 它不仅仅是可用的,像这样的东西吗? @配置[“ApplicationInsights:InstrumentationKey”] 我使用razor页面创建了一个新的MVC项目 仅供参考,我是mvc新手-代码示例帮助很大。使用ActionFilters您可以中断请求,并将配置变量添加到ViewBag中,以便从视图或\u Layout.cshtml文件访问 例如,如果以下配置部分位于appsettings.

我似乎不知道如何从我的_Layout.chtml文件中的appsettings.json读取值

它不仅仅是可用的,像这样的东西吗? @配置[“ApplicationInsights:InstrumentationKey”]

我使用razor页面创建了一个新的MVC项目


仅供参考,我是mvc新手-代码示例帮助很大。

使用
ActionFilters
您可以中断请求,并将配置变量添加到
ViewBag
中,以便从视图或
\u Layout.cshtml
文件访问

例如,如果以下配置部分位于
appsettings.json

{
    "MyConfig": {
        "MyValue": "abc-def"
    }
}
在代码
MyConfig.cs
中:

public class MyConfig
{
    public string MyValue{ get; set; }
}
首先创建一个非常简单的ActionFilter,它源自
IAsyncationFilter
,如下所示:

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();
    }
}
稍后在
启动中。ConfigureServices
方法更改
服务。将MVC添加到以下内容:

public void ConfigureServices(IServiceCollection services)
{

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

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

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

}
要仅在
\u Layout.cshtml
或其他视图中访问值,您可以键入:

@ViewBag.MyConfig.MyValue

在.net core mvc中,您可以通过在视图顶部添加以下两行来注入配置:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
然后,您可以通过以下方式访问该值:

@Configuration.GetSection("ApplicationInsights")["InstrumentationKey"]
@using Microsoft.Extensions.Options
@inject IOptions<ApplicationInsightsOptions> 
ApplicationInsightsOptionsAccessor
@
{
   var instrumentationKey = 
        ApplicationInsightsOptionsAccessor.Value.InstrumentationKey;
}

如果使用“选项”模式,则可以如下方式将其插入视图:

@Configuration.GetSection("ApplicationInsights")["InstrumentationKey"]
@using Microsoft.Extensions.Options
@inject IOptions<ApplicationInsightsOptions> 
ApplicationInsightsOptionsAccessor
@
{
   var instrumentationKey = 
        ApplicationInsightsOptionsAccessor.Value.InstrumentationKey;
}
@使用Microsoft.Extensions.Options

@注入IOptions

也可以使用速记
@Configuration[“ApplicationInsights:InstrumentationKey”]
来访问这些值。这就是我想要的,谢谢