客户端中的 Blazor Web 应用程序导航管理器 -> Exception_WasThrown

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

我正在使用 VS2022 创建 Blazor Web 应用程序。以下是项目概述: Blazor Web App project overview

在客户端项目的代码部分使用 NavigationManager 时,我收到 Exception_WasThrown 错误: Exception

这是 BlazorApp.Client 中的

Home.razor
内容:

@page "/"
@inject NavigationManager NavigationManager

<PageTitle>Home</PageTitle>

<h1>Hello, world!</h1>

Welcome to your new app.

@code {
    protected override void OnInitialized()
    {
        NavigationManager.NavigateTo("/weather");
    }
}

我已经添加了这个:

app.MapRazorComponents<App>()
        .AddInteractiveWebAssemblyRenderMode()
        .AddAdditionalAssemblies(typeof(BlazorApp1.Client._Imports).Assembly);

到 BlazorApp 项目中的

Program.cs
,我已在客户端项目中更新了我的
Routes.razor
,如下所示:

<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }">
    <Found Context="routeData">
        <RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
        <FocusOnNavigate RouteData="routeData" Selector="h1" />
    </Found>
</Router>

我这里缺少什么吗?

谢谢!

我尝试根据 https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing?view=aspnetcore- 将程序集添加到 Project.cs 以及 Route.razor 中8.0

asp.net-core navigation blazor client .net-8.0
1个回答
0
投票

得到OP的确认,使用

OnAfterRender
代替
OnInitialized
可以解决问题。根据我的测试,当异常发生时,我可以按F5继续运行应用程序,最终导航将完成,因此由于初始化和初始化之间的冲突,恐怕该异常有点类似于第一次机会异常渲染。这样使用
OnAfterRender
就可以避免这种冲突。

protected override void OnAfterRender(bool firstRender)
{
    if (firstRender){
         NavigationManager.NavigateTo("/weather");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.