JsonAsync 获取正确数量的对象但对象为空 Blazor WASM
JsonAsync Getting correct number of objects but objects are empty Blazor WASM
我正在开发一个 Blazor WASM 网络应用程序,它获取客户订单的预计到达时间,但我的 GetFromJsonAsync() 具有正确数量的对象(客户),但它们都是空对象。
数据来自 excel 电子表格,然后映射到对象(客户、订单、项目),关系是客户有订单列表,订单列表有项目列表。每个客户都被添加到 Customer class 中的静态客户列表中。到目前为止一切正常(我创建了一个程序来测试它,所有数据都在它所属的地方)。
从那里我创建了一个客户存储库,然后 运行 通过客户的静态列表,将每个客户推送到存储库。
public static void AddCustomerRepository(this IServiceCollection services)
{
Workbook workbook = new Workbook();
workbook.InitWorkbook();
workbook.MapOrdersFromWorkbook();
var customerRepository = new MemoryRepository<Customer>();
foreach (Customer customer in Customer.Customers) {
customerRepository.Add(customer);
}
services.AddSingleton<IRepository<Customer>>(customerRepository);
}
AddCustomerRepository 在 Web 应用程序启动时 运行。这是 .razor 文件中的 JsonAsync,它在 json (814) 中获取正确数量的对象,但没有数据,因此它是 814 个空对象。
private Customer[] customer;
protected async override Task OnInitializedAsync()
{
customer = await Http.GetFromJsonAsync<Customer[]>("api/OrderStatus");
StateHasChanged();
}
这里是 API 控制器:
[Route("api/[controller]")]
[ApiController]
public class OrderStatusController : ControllerBase
{
private readonly IRepository<Customer> _customerRepository;
public OrderStatusController(IRepository<Customer> customerRepository)
{
_customerRepository = customerRepository;
}
[HttpGet]
public IEnumerable<Customer> Get()
{
return _customerRepository.GetAll()
.OrderBy(customer => customer.number);
}
}
什么会导致它获得正确数量的对象但对象中没有数据?这是我第一次使用 Blazor WASM,也是我第一次使用 .NET,我肯定会放弃一个比我应该开始的更大的项目,但我现在在这个项目中到目前为止我还没有想报废它。
What would cause it to get the correct number of objects but no data in the objects?
很可能 属性 名称不匹配。
There are 2 classes for Customer,
比较一下。显然它们不“Json兼容”。
更实用的方法是在共享项目中有 1 个 class 客户。看看你能不能做到这一点。
... to a static list of Customers in the Customer class.
把它移到其他地方。它不应该在共享中。
如果您确实需要两个不同的客户 class(这是可能的),请更改您的 API。将 Server.Customer 转换为 Shared.Customer 和 return。您可以使用 AutoMapper。
要点是Client和Server都要使用Shared.Customer进行通信。它是您的数据传输对象 (DTO)。
我正在开发一个 Blazor WASM 网络应用程序,它获取客户订单的预计到达时间,但我的 GetFromJsonAsync() 具有正确数量的对象(客户),但它们都是空对象。
数据来自 excel 电子表格,然后映射到对象(客户、订单、项目),关系是客户有订单列表,订单列表有项目列表。每个客户都被添加到 Customer class 中的静态客户列表中。到目前为止一切正常(我创建了一个程序来测试它,所有数据都在它所属的地方)。
从那里我创建了一个客户存储库,然后 运行 通过客户的静态列表,将每个客户推送到存储库。
public static void AddCustomerRepository(this IServiceCollection services)
{
Workbook workbook = new Workbook();
workbook.InitWorkbook();
workbook.MapOrdersFromWorkbook();
var customerRepository = new MemoryRepository<Customer>();
foreach (Customer customer in Customer.Customers) {
customerRepository.Add(customer);
}
services.AddSingleton<IRepository<Customer>>(customerRepository);
}
AddCustomerRepository 在 Web 应用程序启动时 运行。这是 .razor 文件中的 JsonAsync,它在 json (814) 中获取正确数量的对象,但没有数据,因此它是 814 个空对象。
private Customer[] customer;
protected async override Task OnInitializedAsync()
{
customer = await Http.GetFromJsonAsync<Customer[]>("api/OrderStatus");
StateHasChanged();
}
这里是 API 控制器:
[Route("api/[controller]")]
[ApiController]
public class OrderStatusController : ControllerBase
{
private readonly IRepository<Customer> _customerRepository;
public OrderStatusController(IRepository<Customer> customerRepository)
{
_customerRepository = customerRepository;
}
[HttpGet]
public IEnumerable<Customer> Get()
{
return _customerRepository.GetAll()
.OrderBy(customer => customer.number);
}
}
什么会导致它获得正确数量的对象但对象中没有数据?这是我第一次使用 Blazor WASM,也是我第一次使用 .NET,我肯定会放弃一个比我应该开始的更大的项目,但我现在在这个项目中到目前为止我还没有想报废它。
What would cause it to get the correct number of objects but no data in the objects?
很可能 属性 名称不匹配。
There are 2 classes for Customer,
比较一下。显然它们不“Json兼容”。
更实用的方法是在共享项目中有 1 个 class 客户。看看你能不能做到这一点。
... to a static list of Customers in the Customer class.
把它移到其他地方。它不应该在共享中。
如果您确实需要两个不同的客户 class(这是可能的),请更改您的 API。将 Server.Customer 转换为 Shared.Customer 和 return。您可以使用 AutoMapper。
要点是Client和Server都要使用Shared.Customer进行通信。它是您的数据传输对象 (DTO)。