如何在 Blazor 的 CRUD 中列出所有用户?
How can I list all users in a CRUD in Blazor?
我正在尝试获取 Blazor 服务器环境中用户管理的 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");
}
}
问题是 ApplicationUser 在 Razor 视图中无法识别。我尝试注入 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 ...
}
我正在尝试获取 Blazor 服务器环境中用户管理的 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");
}
}
问题是 ApplicationUser 在 Razor 视图中无法识别。我尝试注入 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 ...
}