gpt4 book ai didi

asp.net-core - Blazor 在组件之间传递 List

转载 作者:行者123 更新时间:2023-12-03 16:02:37 25 4
gpt4 key购买 nike

我的代码有问题,我的页面布局如下。
我正在与数据库通信以获取主要内容的数据。是List<SomeClass>我从数据库中得到的。现在我想要相同的List<SomeClass>可用于 RightContent。这两个组件都是自定义的并且具有不同的布局,但可以共享相同的 List 而不是两次进行相同的调用。 (序列是 MainContent Initialized() 方法首先被调用)
我创建了一个具有以下属性的服务类 AppDataService。还添加到 IServiceCollection services在启动中。

public List<SomeClass> sharedListOfSomeClass = new List<SomeClass>();
在 MainContent 中,我正在注入(inject) AppDataService 并为 sharedListOfSomeClass 分配数据库值。
现在,如果我在正确的内容中注入(inject) AppDataService 并尝试访问 sharedListOfSomeClass 我将其设为空。
我知道我在这里缺少绑定(bind),因为两个组件在 html 方面都不同,并且无法将其绑定(bind)到任何 html 标签。
任何人都可以帮助我实现这一目标。我想对这两个组件的数据库进行一次调用。
enter image description here

最佳答案

如果你想拥有应用程序的一些全局状态并在不同组件之间共享,最合理的方法是创建一个 State将包含全局状态数据的类

public class State
{
public List<SomeClass> SomeClassObjectsCollection { get; set; } = new List<SomeClass>();
}

在您的 Startup (或 Program 如果您使用 Blazor wasm)您应该添加 State对象作为单例
services.AddSingleton<State>()

在每个页面上,您需要访问状态(或者甚至在 _Imports 如果您想经常访问它)添加
@inject State State

之后在任何页面上您都可以引用 State.SomeClassObjectsCollection并获得相同的数据。

关键是添加一个状态作为单例。如果您将添加为 transient 或什至作用域,则依赖容器将创建 State 的新实例.

关于asp.net-core - Blazor 在组件之间传递 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61153706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com