如何在我的 _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 文件 [重复]

仅在我的 iOS 应用程序中将 tesseract 字符限制为 a-z 和数字

在Pyspark中使用时,具有静态文件依赖性的python包无法读取静态文件