首页 > 解决方案 > 在@code - .net Core Blazor 中访问@Inject 变量

问题描述

我是 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));

配置.cs

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

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

标签: asp.net-corerazorblazorrazorengine

解决方案


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

@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();
    }
}

推荐阅读