如何从设置 json 获取数据到 mvc 6 视图?

How to get data from settings json to mvc 6 view?

我想一次从 json 文件加载所有设置键值对,并在 mvc 6 视图页面中使用设置键值,其中 required.I 如果最佳解决方案是 [=15] 将不胜感激=] 场景如下

if(Settings.enable_logo_text)
{
<span>Settings.logo_text</span>
}

关于新配置和选项的official documentation非常好,我建议先去那里看看。

按照此处提供的指导,首先为您的设置创建一个 POCO class:

public class Settings
{
    public string logo_text { get; set; }
    public bool enable_logo_text { get; set; }
}

更新启动的 ConfigureServices 方法 class,这样您就可以从配置的配置中读取您的设置,然后可以作为服务使用,可以在您需要的任何地方注入:

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 class:

{
  ...

  "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>

}