如果我在“共享的-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发生了变化。
答案 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");
}
}
希望,会有所帮助。谢谢