Razor 如何在my_layout.chtml中读取appsettings.json
我似乎不知道如何从我的_Layout.chtml文件中的appsettings.json读取值 它不仅仅是可用的,像这样的东西吗? @配置[“ApplicationInsights:InstrumentationKey”] 我使用razor页面创建了一个新的MVC项目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.
仅供参考,我是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”]
来访问这些值。这就是我想要的,谢谢