【发布时间】:2020-07-13 05:46:05
【问题描述】:
我的页面中有这段代码:
@if (players == null)
{
<p><em>Loading...</em></p>
}
else
{
<p>Number of Players: @players.Count</p>
<p>Number of Teams: @teamsCount</p>
<p>Excess Players: @excessPlayers</p>
}
@code {
private List<PlayerModel> players;
private int teamsCount { get; set; }
private int excessPlayers { get; set; }
protected override async Task OnInitializedAsync()
{
players = await _db.GetPlayers();
int teamsCount = players.Count / 5;
int excessPlayers = players.Count % 5;
}
加载的html会正确显示一段时间,然后players.Count会正确更新并显示41,但teamsCount和excessPlayers总是显示0。
我已尝试在OnInitializedAsync() 末尾调用StateHasChanged()。
我还尝试在单独的方法中设置teamsCount 和excessPlayers 并调用StateHasChanged(),但这些都不起作用。 teamsCount 和 excessPlayers 仍然显示为 0,尽管我可以看到在代码中它们分别是 8 和 1,这是正确的。
我做错了什么?
【问题讨论】:
-
<p>Number of Teams: @(players.Count / 5)</p>怎么样? -
这确实有效,它将按预期显示 8。但是,我想了解为什么在代码中设置变量并没有像我期望的那样反映在 UI 中(实际上,似乎在其他地方也可以使用)。
标签: c# blazor blazor-server-side