Lin*_*røm 4 asynchronous server-side-rendering asp.net-core razor-pages
下面的代码返回ArgumentNullException: Value cannot be null. (Parameter 'source')错误。该错误是由 引发的Model.Players.Any()。看起来页面是在评估隐藏文件的代码之前呈现的。我相信该错误一定与异步调用 OnGetAsync 有关,但我不知道如何修复它。使用 Visual Studio 调试,我已经检查了 Players 属性的值并且计算正确(但是在 razor 页面渲染之后 - 并抛出错误)
文件背后的代码(摘录):
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
};
}
Run Code Online (Sandbox Code Playgroud)
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>
}
Run Code Online (Sandbox Code Playgroud)
我已经解决了这个问题。
问题是 OnGetAsync 处理程序方法返回 void 而不是任务
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
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |