如何在Blazor服务器端Razor组件中导入IConfiguration?

7

我有一个Razor组件,想要使用来自我的appsettings.json文件的配置值,并且我已经按照这里的示例进行了操作:注入IConfiguration

但是这在我的@code块中不起作用。

到目前为止,我的Razor组件看起来像这样:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

@code {
    private string strValue = Configuration.GetSection("MySection").Value;
}

我在 Configuration.GetSection 行收到以下错误:
字段初始化程序无法引用非静态字段、方法或属性 'MyComponent.Configuration'
我似乎可以在 @code 代码段之外使用 @Configuration 而没有错误。
我有什么遗漏的吗?如果这是一个重复问题,很抱歉我没有找到相关帖子。

1
另一种加载设置的方法 https://stackoverflow.com/a/63583894/1492496。Intellisense 也可以使用这种方法。 - Brian Parker
这是一个标准的C#规则/错误,与Blazor无关。 - H H
1个回答

10

试试这个:

@code {
    private string strValue;
  
  protected override void OnInitialized()
{
    strValue = Configuration.GetSection("MySection").Value;

}
}

你不能同时通过调用 Configuration.GetSection 来定义并初始化变量 strValue。通常需要先定义一个变量,然后使用方法返回的值对其进行赋值,在 OnInitialized(Async) 对中执行此操作。

1
你是我的英雄!我不知道在 Razor 中那是一个限制! - Skint007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接