The code below return an ArgumentNullException: Value cannot be null. (Parameter 'source') error. The error is thrown by Model.Players.Any(). It seems the page is rendered before the code behind file is evaluated. I believe the error must related to the asyncronous call OnGetAsync, but I don't know how to fix it.
Using Visual Studio debugging I have checked the value of Players property and is evaluates correctly (but after the razor page has rendered - and thrown the error)
Code behind file(extract):
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 page(extract):
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>
}