我有一个带有按钮的页面,该按钮调用异步 webapi,然后导航到另一个页面。然而,尽管代码运行没有错误,但它不会转到新页面。相反,当前页面会重新出现。
我的代码:
C#
private async void Method()
{
//perform async web call.
//code
//Navigate to new page
navManager.NavigateTo("/new-page");
}
Razor
<button @onclick="Method">Button Description</button>
我想 onclick 按钮是为了执行页面更改而不是导航?我不知道,但我知道页面是正确的并且代码没有损坏。
利用您提供的代码,我们可以创建以下最小可重现示例。
@page "/"
@inject NavigationManager NavManager
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
<button class="btn btn-primary mt-3" @onclick="DoAsync">Click me</button>
@code{
private async void DoAsync()
{
//Fake an async call
await Task.Delay(3000);
NavManager.NavigateTo("/counter");
}
}
这正常工作:等待 3 秒,然后导航。
虽然这个图案:
private async void DoAsync()
是 UI 事件处理程序的 NoNo。应该是:
private async Task DoAsync()
这不是本例的根本原因。这就是你在做什么:
//perform async web call.
//code
```.