我曾经在 MVC 应用程序中有一个公共服务,将其注册为瞬态服务并在整个应用程序中访问它的值而没有任何问题。
我试图在我的客户端 Blazor 应用程序中实现相同的机制
首先创建了一个类AppState
public class AppState
{
public string BaseUrl { get; set; }
}
注册为服务
services.AddSingleton<AppState, AppState>();
用于 Blazor 组件索引组件
public class IndexComponent : ComponentBase
{
[Inject]
HttpClient Http { get; set; }
[Inject]
public AppState AppState { get; set; }
protected override async Task OnInitializedAsync()
{
AppState = await Http.GetJsonAsync<AppState>(ConfigFiles.GetPath("appsettings.json"));
await Task.FromResult(0);
}
}
试图在 index.razor 文件中打印基本 url
@page "/"
@inherits IndexComponent
<p>@AppState.BaseUrl</p>
到这里为止很好,现在因为它包含基本 url,所以我想在另一个组件中访问它
public class MiniCartComponent : ComponentBase
{
[Inject]
public AppState AppState { get; set; }
protected override async Task OnInitializedAsync()
{
await Task.FromResult(0);
}
}
这里是空的,我不知道为什么
我试图在剃刀文件中打印它
@inherits MiniCartComponent
<p>@AppState.BaseUrl</p>
这里它是空的,它被注册为跨组件共享数据的服务,一旦设置它不应该在应用程序中具有价值吗?