c# - NavigationManager.NavigateTo in razor pages c# 有时不起作用

标签 c# .net-core blazor

我有一个关于 asp.net core 和 razor 页面的非常简单的问题。

在 c# razor 代码中,我想在某些情况下重定向到另一条路线。
如果之前有异步(等待)webservice 调用,NavigationManager.NavigateTo 不能正常工作,但也不会抛出异常。

async Task Cancel()
{
    var authState = await authenticationStateTask;
    var user = authState.User;
    if (user.Identity.IsAuthenticated){           
       // if there's some async webservice call action here, 
       // NavigationManager.NavigateTo does neither work nor an exception is thrown
       NavigationManager.NavigateTo("/Project", true);
    }
}

你知道可能是什么原因吗?

NavigationManager.NavigateTo 的替代方案是什么?

附言请不要以那种方式提出 Response.Redirect(因为,那不适合我)。
var context = new Microsoft.AspNetCore.Http.HttpContextAccessor();
context.HttpContext.Response.Redirect("/Project", true)

亲切的问候,
-他。

最佳答案

现在已经修复了错误。

NavigationManager.NavigateTo(...) 的问题仅发生了,因为我在 Razor 页面的发布表单中使用了一个按钮。用 div 替换了表单标签,现在一切正常。

亲切的问候,
-他

<div>
<p>
    <label>Project name: @projectName</label>
</p>
<p>
    <!-- [...] -->
    <span class="btn-cancel">
        <button class="btn-primary" @onclick="@(async () => await Cancel())">Cancel</button>
    </span>
</p></div>

@code {
    // ...
    async Task Cancel()
    {
        // here're other async action calls
        NavigationManager.NavigateTo("/Project", true);
    }
}

关于c# - NavigationManager.NavigateTo in razor pages c# 有时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58373003/

相关文章:

c# - dotnet 5 CLI 在 centos 8 上不提供 https

c# - 如何在#if 语句中设置.NET Core 进行编译

c# - 使用 Nlog 在 Blazor 服务器中记录 URL

blazor - MatBlazor - MatNavMenu 中向下箭头的位置不正确

c# - 如何在 Blazor 服务器中设置同意 cookie

c# - 有没有办法将 .xlsx 和 .xls 文件转换为 CODE 中的制表符分隔文本文件

c# - 寻找桌面应用程序的 Visual Studio 工具箱样式导航

c# - 循环作为 for 循环比 while 循环快得多,然后当语句更改时,while 循环更快。怎么了?

c# - 使用 C# 程序区分两个内容相同但格式不同的文本文件

c# - Hangfire - Multi-Tenancy ,ASP.NET Core - 解析正确的租户