【发布时间】:2022-01-21 08:23:03
【问题描述】:
我正在 Blazor(服务器端)开发一个高尔夫记分卡网络应用程序。我希望它执行以下操作之一:
- 第一次渲染时,它应该从本地存储加载记分卡(如果有的话)。
- 在所有后续渲染(更改)中,它应该将记分卡保存到本地存储中,以便始终使用最新值进行更新。
我的代码:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
Console.WriteLine("Loading scorecard from local storage...");
var result = await ProtectedLocalStorage.GetAsync<Scorecard>("scorecard");
if (result.Success)
scorecard = result.Value;
StateHasChanged();
}
else
{
Console.WriteLine("Saving scorecard to local storage...");
if (scorecard != null)
await ProtectedLocalStorage.SetAsync("scorecard", scorecard);
}
}
我检查了Get 和Set 是否按预期到达。我还检查了Set,记分卡的值是应有的。但是一旦我再次到达Get,分数就会重置为0。
Scores 是HoleScore 在Scorecard 类上的列表,如下所示:
public class Scorecard
{
(...)
public List<HoleScore> Scores { get; } = new List<HoleScore>();
}
public record HoleScore
{
public Guid PlayerId { get; set; }
public int HoleNumber { get; set; }
public int NumberOfStrokes { get; set; }
}
每次加载时将值NumberOfStrokes 重置为零(或者可能从未保存)。这是为什么呢?
【问题讨论】:
-
分号是错字,已被删除:-)
标签: c# local-storage blazor blazor-server-side