【问题标题】:Access @Inject variable in @code - .net Core Blazor在@code - .net Core Blazor 中访问@Inject 变量
【发布时间】:2020-04-12 01:49:23
【问题描述】:

我是 Blazor .net Core 的新手。我在我的 .razor 页面中注入了服务设置

@inject Microsoft.Extensions.Options.IOptions<Configuration> Configuration

接下来我在下面有 @code 指令来初始化 _m 对象

@code 
{
    private ViewModel _m = new ViewModel(Configuration.Value);

    protected async Task DoSearchAsync()
    {
        await _m.PerformSearchAsync();
    }
}

ConfigureServices中的注册代码:

services.Configure<Configuration>(options => 
    Configuration.GetSection("ConfigurationSettings").Bind(options));

Configuration.cs

public class Configuration
{
    private string ServiceEndpointUrl { get; set; }
}

我需要将配置传递给采用IOptions&lt;T&gt;ViewModel() 构造函数,但由于某种原因,我无法在@code 指令中访问我注入的变量“配置”。请问如何访问?

【问题讨论】:

  • 什么语法问题?
  • 您是否在 DI 中配置了选项名称 Configuration
  • 是的,我已经添加了。
  • 您能否发布带有命名空间声明的注册代码和您的 _Imports.razor
  • 不要发布带有假名的幻想代码。改为创建minimal reproducible example

标签: asp.net-core razor blazor razorengine


【解决方案1】:

您可以在以下方法中访问您注入的服务:

@inject Microsoft.Extensions.Options.IOptions<Configuration> cfg

@code {
    private ViewModel _m;

    protected override void OnInitialized()
    {
        base.OnInitialized();
        _m = new ViewModel(cfg.Value);
    }

    protected async Task DoSearchAsync()
    {
        await _m.PerformSearchAsync();
    }
}

【讨论】:

    猜你喜欢
    • 2020-04-17
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2020-04-10
    相关资源
    最近更新 更多