san*_*ina 6 json.net razor asp.net-core-mvc
我想立即从json文件加载所有设置键值对,并在必要时使用mvc 6视图页面中的设置键值.如果提供最佳解决方案,我将不胜感激.我有一个如下所示的场景
if(Settings.enable_logo_text)
{
<span>Settings.logo_text</span>
}
Run Code Online (Sandbox Code Playgroud)
关于新配置和选项的官方文档非常好,我建议先看一下.
按照那里提供的指导,首先为您的设置创建一个POCO类:
public class Settings
{
public string logo_text { get; set; }
public bool enable_logo_text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
更新ConfigureServices启动类的方法,以便从配置的配置中读取设置,然后将其作为可在任何需要的地方注入的服务提供:
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<Settings>(Configuration);
services.AddOptions();
}
Run Code Online (Sandbox Code Playgroud)
如果要使用appsettings.json文件,请确保还构建Configuration包含该json文件的对象.例如:
public Startup(IHostingEnvironment env)
{
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以在appsettings.json文件中配置您的值,并在您的Settings类上设置值:
{
...
"enable_logo_text": true,
"logo_text": "My Logo Text"
}
Run Code Online (Sandbox Code Playgroud)
最后,您可以通过添加IOptions<Settings>依赖项来访问配置的值.最简单的方法是直接将选项注入视图(如文档中所述),但您可能需要考虑将选项注入控制器并以更受控制的方式将它们传递给视图:
@inject IOptions<Settings> Settings
...
@if(Settings.Value.enable_logo_text)
{
<span>@Settings.Value.logo_text</span>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |