dcp*_*ers 1 .net-core asp.net-core razor-pages
我们有StartUp如下获取值appsettings.json:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
var environment = Configuration["ApplicationSettings:Environment"];
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(Configuration.GetSection("ApplicationSettings"));
...
}
Run Code Online (Sandbox Code Playgroud)
我们也模型叫 AppSettings
public class AppSettings
{
public string Environment { get; set; }
public string Version { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
由于我正在/Pages/Shared/_Layout.cshtml尝试将此版本注入到此共享页面中,因此我无法执行代码隐藏方法。那怎么注入呢?
更新 1 -
理论上,如果它是页面模型,我可以这样做:
public class _LayoutModel : PageModel
{
private readonly AppSettings _appSettings;
public string Version;
public string Environment;
public _LayoutModel(IOptions<AppSettings> appsettings)
{
_appSettings = appsettings.Value;
}
public void OnGet()
{
Environment = _appSettings.Environment;
Version = _appSettings.Version;
}
}
Run Code Online (Sandbox Code Playgroud)
就像在控制器中一样,您也可以将您的服务注入到视图中。
你可以这样使用@inject:
@inject Microsoft.Extensions.Options.IOptions<AppSettings> AppSettingsOptions
或添加@using Microsoft.Extensions.Options到 _ViewImports.cs,然后像这样在布局中注入选项:
@inject IOptions<AppSettings> AppSettingsOptions.
之后,您可以访问您的设置,例如:@AppSettingsOptions.Value.Version。
为核心 3.1 添加 Hameed 的回答:
AppSettings.Json:
{ "Company": {"Name": "EvilCorp"}}
_ViewImports.cshtml:
@using Microsoft.Extensions.Configuration
_Layout.cshtml:
@inject IConfiguration _config
在剃刀 html 中:
<h1>@_config["Company:Name"]</h1>
| 归档时间: |
|
| 查看次数: |
3311 次 |
| 最近记录: |