NavigationManager 没有按预期工作?

NavigationManager does not works as expected?

如果我在共享中创建一个页面 - LoginPage.razor :

@inherits LayoutComponentBase

@inject IJSRuntime JSRuntime;
@inject NavigationManager NavigationManager;


<button @onclick="onBtnClick"> sfsdf</button>

@code
{
    public void onBtnClick()
    {
        NavigationManager.NavigateTo( "/Error" );
    }
}

在 App.razor 中将 DefaultLayout 更改为上面的新页面:

<Router AppAssembly="@typeof(Program).Assembly">
    <Found Context="routeData">
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(LoginPage)" />
    </Found>
    <NotFound>
        <LayoutView Layout="@typeof(LoginPage)">
            <p>Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>

然后在 Pages 中创建一个页面。让我们说 ErrorPage.razor :

@page "/Error"
<h3>ErrorPage</h3>

@code 
{
}

如果我 运行 应用程序并单击按钮,页面应该更改为错误页面,但只有 URL 正在更改。

我认为,您错过了 LoginPage bootstrap 组件中的 @Body 标记,它会在单击按钮时加载错误组件。

LoginPage.razor

@inherits LayoutComponentBase
@inject NavigationManager navigationManager

<button @onclick="onButtonClick">Go To Error Page</button>

<div class="bodyLoginPage">
    @Body
</div>

@code{
    public void onButtonClick()
    {
        navigationManager.NavigateTo("/Error");
    }
}

希望对您有所帮助。谢谢