NavigationException:Blazor 中的“Exception_WasThrown”

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

我尝试导航到另一个页面,但每次都会出现异常:“Microsoft.AspNetCore.Components.NavigationException:Exception_WasThrown”。你现在知道我需要做什么或者这里出了什么问题吗?

在我的仪表板页面上我有@page“/dashboard”,所以我不认为该字符串是错误的。

c# asp.net-core blazor
3个回答
1
投票

您是否在

@code{}
中添加了此代码?如果没有,它将得到这样的异常,但如果您仍然
F5
继续调试,它将呈现重定向页面。这是引发预渲染期间发生重定向的第一次机会异常。解决方法是关闭第一次机会异常,您不会看到这种情况发生,您可以检查this github issues

@page "/"
@inject NavigationManager NavManager
    
<p>Redirecting to Page</p>
@if (condition) {
    NavManager.NavigateTo($"/dashboard");   
}

另一个解决方法是您可以将这些代码放入

@code{}
:

@page "/"
@inject NavigationManager NavManager        
<p>Redirecting to Page</p>    
@code {
    protected override void OnInitialized()
    {
        @if (condition) {
            NavManager.NavigateTo($"/dashboard");  
        }
    }
}

0
投票

我面临着同样的问题,我通过使函数异步并在后面添加

await Task.CompletedTask
解决了它:

private async Task YourFunction()
{
    if (yourIfCondition)
    {

    }
    else
    {
        NavManager.NavigateTo($"/dashboard");
        await Task.CompletedTask;
    }
}

我读到这是由于框架的开发方式造成的。它应该在实际导航到新元素之前抛出异常,但在开发时不太方便。


-1
投票

我不是导航专家,但我想也许你需要了解基础:

LoginNavigator.NavigateTo(LoginNavigator.BaseUri + $"/dashboard", true);

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