【发布时间】:2016-03-11 17:00:27
【问题描述】:
我想一次从 json 文件中加载所有设置键值对,并在需要时在 mvc 6 视图页面中使用设置键值。如果提供最佳解决方案,我将不胜感激。我有如下场景
if(Settings.enable_logo_text)
{
<span>Settings.logo_text</span>
}
【问题讨论】:
标签: razor json.net asp.net-core-mvc
我想一次从 json 文件中加载所有设置键值对,并在需要时在 mvc 6 视图页面中使用设置键值。如果提供最佳解决方案,我将不胜感激。我有如下场景
if(Settings.enable_logo_text)
{
<span>Settings.logo_text</span>
}
【问题讨论】:
标签: razor json.net asp.net-core-mvc
关于新配置和选项的official documentation 非常好,我建议先看看那里。
按照那里提供的指导,首先为您的设置创建一个 POCO 类:
public class Settings
{
public string logo_text { get; set; }
public bool enable_logo_text { get; set; }
}
更新您的启动类的ConfigureServices 方法,以便您从配置的配置中读取您的设置,然后作为可以在您需要的任何地方注入的服务提供:
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<Settings>(Configuration);
services.AddOptions();
}
如果您想使用 appsettings.json 文件,请确保您还构建了包含该 json 文件的 Configuration 对象。例如:
public Startup(IHostingEnvironment env)
{
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
这样您可以在 appsettings.json 文件中配置您的值,这些值将在您的 Settings 类中设置:
{
...
"enable_logo_text": true,
"logo_text": "My Logo Text"
}
最后,您可以通过添加IOptions<Settings> 依赖项来访问配置的值。最直接的方法是将选项直接注入视图(如the docs 中所述),但您可能需要考虑将选项注入控制器并以更可控的方式将它们传递给视图:
@inject IOptions<Settings> Settings
...
@if(Settings.Value.enable_logo_text)
{
<span>@Settings.Value.logo_text</span>
}
【讨论】: