代码之家  ›  专栏  ›  技术社区  ›  Alexan

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

  •  0
  • Alexan  · 技术社区  · 3 年前

    在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))
    

    这个代码 executes two time .

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

    禁用预呈现不是一个选项。

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

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

    或者其他选择?

    0 回复  |  直到 3 年前
        1
  •  2
  •   MrC aka Shaun Curtis    3 年前

    我不认为有一个安全的方法来做这件事。Net5-你已经为你的问题添加了标签。Net5。

    .Net6添加 persist-prerendered-state ,我认为这将解决你的问题。这里有一个指向MS文档页面的链接,解释了如何使用它:

    MS-Docs - Persist prerendered state