NavigationManager无法按预期工作?

时间:2020-06-03 05:54:09

标签: blazor blazor-client-side asp.net-blazor

如果我在“共享的-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发生了变化。

  • 如何切换到“错误”页面?

1 个答案:

答案 0 :(得分:3)

我认为,您已经错过了LoginPage引导程序组件中的@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");
    }
}

希望,会有所帮助。谢谢