blazor 服务器查询字符串:如何只获取一次数据

blazor server query string: how to get data only one time

在 blazor 页面上,我们需要从查询字符串中获取数据。

我们使用OnInitialized事件读取数据:

Working with Query Strings in Blazor

例如:

protected override void OnInitialized()
    {
        var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
        if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("initialCount", out var _initialCount))
        {
            currentCount = Convert.ToInt32(_initialCount);
        }
    }

但是我们使用预渲染:

@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))

和此代码 .

这是个问题,因为我们需要使用这些参数访问数据库,但我们不想执行两次。

禁用预渲染不是一个选项。

试图将代码移动到其他事件,例如移动到 OnParametersSet,但它也执行了两次。

也许我们可以检查事件是第一次还是第二次执行并使用这个条件?

或者其他一些选择?

我认为在 .Net5 中没有安全的方法来执行此操作 - 您已使用 .Net5 标记了您的问题。

.Net6 添加了persist-prerendered-state,我认为这将解决您的问题。这是解释如何使用它的 MS-Docs 页面的 link:

MS-Docs - Persist prerendered state