asp.net-core - 评估 OnGetAsync 之前的 Razor 页面呈现
问题描述
下面的代码返回ArgumentNullException: Value cannot be null. (Parameter 'source')
错误。错误由Model.Players.Any()
. 似乎页面是在评估文件背后的代码之前呈现的。我相信该错误必须与异步调用 OnGetAsync 有关,但我不知道如何修复它。使用 Visual Studio 调试,我检查了 Players 属性的值并正确评估(但在剃须刀页面呈现后 - 并抛出错误)
文件后面的代码(提取):
public IEnumerable<Player> Players { get; set; }
public async void OnGetAsync()
{
IEnumerable<Club> clubs = await clubService.GetAllClubs();
IEnumerable<User> users = _userManager.Users;
Players = from user in users
join club in clubs on user.ClubId equals club.ClubId
orderby user.Name
select new Player
{
UserId = new Guid(user.Id),
Name = user.Name,
Surname = user.Surname,
DOB = user.DOB,
ClubId = club.ClubId,
ClubName = club.ClubName,
ClubLogo = club.ClubLogo
};
}
Pazor 页面(摘录):
if (Model.Players.Any())
{
foreach (Player player in Model.Players.OrderBy(u => u.Name).ThenBy(u => u.Surname))
{
<div class="col-12 col-md-6 col-lg-4 col-xl-3 my-2">
<div class="card">
<div class="card-header d-inline-flex align-items-center">
<h6>@player.Name @player.Surname</h6>
@if (player.ClubLogo != null)
{
<img src="~/img/clublogos/@player.ClubLogo" height="30" class="mx-2" />
}
</div>
</div>
</div>
}
}
else
{
<h6>No players created yet</h6>
}
解决方案
我已经解决了这个问题。
问题是 OnGetAsync 处理程序方法返回 void 而不是 Task
public IEnumerable<Player> Players { get; set; }
public async Task OnGetAsync()
{
IEnumerable<Club> clubs = await clubService.GetAllClubs();
IEnumerable<User> users = _userManager.Users;
Players = from user in users
join club in clubs on user.ClubId equals club.ClubId
orderby user.Name
select new Player
{
UserId = new Guid(user.Id),
Name = user.Name,
Surname = user.Surname,
DOB = user.DOB,
ClubId = club.ClubId,
ClubName = club.ClubName,
ClubLogo = club.ClubLogo
};
}
推荐阅读
- java - Android 检查文件错误“类型不匹配:推断类型是上下文但路径!应该”
- java - Java银行系统问题
- python - 如何在 x 轴上更改时间值的条形图中的 x 轴刻度/刻度?
- c - C - 无法在任何 IDE 中运行 C 程序(尝试使用 Netbeans 和 VSCode)
- android - Mp android图表,条形渐变背景条形图
- android - 如何调查 Xamarin/libmonosgen-2.0.so 本机崩溃?
- java - 如何在 Java/Gradle 中访问依赖项的依赖项?
- exchangewebservices - EWS - 从 Aspose.Net 电子邮件 MapiMessage 创建 EmailMessage?
- lisp - 在 Lisp 中实现有趣的编码方法
- firebase - REST API Firebase 查询中的“和”