use*_*957 19 model-view-controller configuration appsettings razor
我似乎无法弄清楚如何从我的_Layout.chtml文件中的appsettings.json读取值.
它不仅仅是可用的,这样的吗?@Configuration [ "ApplicationInsights:InstrumentationKey"]
我使用剃刀页面创建了一个新的MVC项目.
fyi,我是一个mvc newbee - 代码示例帮助很多.
Ren*_*ené 36
在.net core mvc中,您可以通过在视图顶部添加以下两行来注入配置:
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样访问值:
@Configuration.GetSection("ApplicationInsights")["InstrumentationKey"]
Run Code Online (Sandbox Code Playgroud)
如果您使用选项模式,您可以将它们注入到您的视图中,如下所示:
@using Microsoft.Extensions.Options
@inject IOptions<ApplicationInsightsOptions>
ApplicationInsightsOptionsAccessor
@
{
var instrumentationKey =
ApplicationInsightsOptionsAccessor.Value.InstrumentationKey;
}
Run Code Online (Sandbox Code Playgroud)
使用ActionFilters您可以中断请求并将配置变量添加到中,ViewBag以便可以从视图或_Layout.cshtml文件中访问它。
例如,如果以下配置部分位于您的appsettings.json
{
"MyConfig": {
"MyValue": "abc-def"
}
}
Run Code Online (Sandbox Code Playgroud)
代码中将MyConfig.cs是:
public class MyConfig
{
public string MyValue{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
首先创建一个非常简单的 ActionFilter,其派生IAsyncActionFilter如下:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
稍后将该Startup.ConfigureServices方法更改services.AddMvc为以下内容:
public void ConfigureServices(IServiceCollection services)
{
//..........
services.AddMvc(options=>
{
options.Filters.Add(new SampleActionFilter(
Configuration.GetSection("MyConfig")
));
});
//..........
}
Run Code Online (Sandbox Code Playgroud)
要仅在_Layout.cshtml或其他视图中访问值,您可以键入:
@ViewBag.MyConfig.MyValue
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5890 次 |
| 最近记录: |