Blazor Web 程序集在导航到新页面后不会呈现新页面

问题描述 投票:0回答:1

我有一个禁用预渲染的 Blazor wasm 项目。

当我在计算机上打开该网站时,一切正常。在移动设备上,当我导航时,我会看到一个空白页面。

我不知道问题出在哪里,所以我将显示可能有问题的代码:

<Router AppAssembly="typeof(Program).Assembly">
    <Found Context="routeData">

        @if (navigationManager.Uri.Contains("/market"))
        {
            <RouteView RouteData="@routeData" DefaultLayout="typeof(Layouts.MarketLayout)" />
        }
        else if (navigationManager.Uri.Contains("/user"))
        {
            <RouteView RouteData="@routeData" DefaultLayout="typeof(Layouts.UserLayout)" />
        }
        else if (navigationManager.Uri.Contains("/admin"))
        {
            <RouteView RouteData="@routeData" DefaultLayout="typeof(Layouts.AdminLayout)" />
        }
        else
        {
            <RouteView RouteData="@routeData" DefaultLayout="typeof(Layouts.AppMainLayout)" />
        }

        <FocusOnNavigate RouteData="routeData" Selector="h1" />
    </Found>

    <NotFound>

    </NotFound>

</Router>

主布局中启动了三个异步任务:

protected override async Task OnInitializedAsync()
{
    await searchEngine.Initialize();
    await purchasesManager.SyncPurchases();
    await purchasesManager.SyncPurchases();
}

如果清除缓存,则移动设备首次启动时一切正常。然后重新启动后,一切又崩溃了。

我尝试在更新

StateHasChanged
后显式调用
navigationManager.LocationChanged
。没有结果

c# blazor
1个回答
0
投票

如果它在正常模式下工作,我不明白为什么它在移动设备上不起作用。

实现此目的的另一种方法是在项目结构中使用组合,并且

_Imports.razor

为每种布局类型创建文件夹,并向该文件夹添加

_Imports.razor
。 在
_Imports.razor
中设置布局:

@layout AdminLayout

此文件夹中的任何 Razor 页面都将使用

AdminLayout
,除非您直接在 Razor 页面中设置它。

这是我的测试设置。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.