如何在我的 _layout.chtml 中读取 appsettings.json
Posted
技术标签:
【中文标题】如何在我的 _layout.chtml 中读取 appsettings.json【英文标题】:How to read appsettings.json in my _layout.chtml 【发布时间】:2018-08-05 08:46:47 【问题描述】:我似乎无法弄清楚如何从我的 _Layout.chtml 文件中的 appsettings.json 读取值。
它不只是可用,像这样吗? @Configuration["ApplicationInsights:InstrumentationKey"]
我使用 razor pages 创建了一个新的 MVC 项目。
仅供参考,我是 mvc newbee - 代码示例很有帮助。
【问题讨论】:
【参考方案1】:在 .net core mvc 中,您可以通过在视图顶部添加以下两行来注入配置:
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
然后您可以像这样访问该值:
@Configuration.GetSection("ApplicationInsights")["InstrumentationKey"]
【讨论】:
也可以使用简写@Configuration["ApplicationInsights:InstrumentationKey"]
来访问这些值。【参考方案2】:
如果您使用选项模式,您可以像这样将它们注入到您的视图中:
@using Microsoft.Extensions.Options
@inject IOptions<ApplicationInsightsOptions>
ApplicationInsightsOptionsAccessor
@
var instrumentationKey =
ApplicationInsightsOptionsAccessor.Value.InstrumentationKey;
Options pattern in ASP.NET Core
【讨论】:
【参考方案3】:使用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
【讨论】:
这就是我要找的,谢谢以上是关于如何在我的 _layout.chtml 中读取 appsettings.json的主要内容,如果未能解决你的问题,请参考以下文章
更新tkinter标签以在我的python GUI上一次显示一行文本文件
如何在我的 Android 应用程序中读取 pdf 文件 [重复]