如何在Blazor的CRUD中列出所有用户



我正试图在Blazor Server环境中获得一个用于用户管理的CRUD页面。我尝试了以下代码:

控制器:

[HttpGet]
public async Task<ActionResult<IEnumerable<ApplicationUser>>> getUsers()
{
return _context.Users.ToList();
}

剃刀页面:

@page "/administration/"
@inject HttpClient httpClient
@code {
protected override async Task OnInitializedAsync()
{
var users = await httpClient.GetFromJsonAsync<List<ApplicationUser>> 
("api/AdministrationController");
}
}

问题是在Razor视图中无法识别ApplicationUser。我尝试注入Microsoft.AspNetCore.Identity,但这在客户端的Razor视图中也不可用。

如何使用控制器让所有用户都处于剃刀视图中?

您可以为API引入一个DTO对象,并从Blazor应用程序中使用它。

[HttpGet]
public async Task<ActionResult<IEnumerable<ApplicationUserDto>>> getUsers()
{
var users =  _context.Users.ToList();
// convert ApplicationUser --> ApplicationUserDto here
// AutoMapper/Mapster are good for this

}

然后,在您的Razor页面中,您可以使用DTO:

@code {
protected override async Task OnInitializedAsync()
{
var userDtos = await httpClient.GetFromJsonAsync<List<ApplicationUserDto>> 
("api/AdministrationController");
}
}

DTO是一个简单的POCO,包含您想要的所有ApplicationUser字段,即:

public class ApplicationUserDto
{
public Guid Id { get; init; }
public string Username { get; init; }
... etc ...
}

相关内容

  • 没有找到相关文章

最新更新