在 Blazor 服务器中使用 NavigationManager NavigateTo 强制加载不会重新加载整个索引

Posted

技术标签:

【中文标题】在 Blazor 服务器中使用 NavigationManager NavigateTo 强制加载不会重新加载整个索引【英文标题】:Using NavigationManager NavigateTo forceload in Blazor server doesn't reload the entire index 【发布时间】:2021-10-08 19:26:31 【问题描述】:

创建使用 MS 身份服务的 dotnet Blazor 服务器应用。当用户注册和登录时,应用程序会向他们发送一个 razor 组件,该组件会添加未保存在 MS Identity 中的其他用户信息 - 他们必须完成此操作才能继续。我在导航栏和索引页面重定向中都使用身份验证和角色。当我在用户表单(剃须刀组件)中运行它时......

navMgr.NavigateTo("/", forceLoad: true);

它甚至没有留下嵌入在 Index.razor 中的 razor 组件。

我想要的是这个表单完成将完全刷新为该用户的“/”(就像他们刚刚登录一样)。我是否必须注销用户才能执行此操作?

【问题讨论】:

【参考方案1】:

这似乎解决了 index.razor 页面中的问题。在我的@if() 中使用过消费者并禁用。

protected override async Task OnParametersSetAsync()

    authstate = await GetAuthenticationStateAsync.GetAuthenticationStateAsync();
    authuser = authstate.User.Identity.Name;
    if (authuser != null)
    
        user = await userManager.FindByEmailAsync(authuser);
        consumer = await userManager.IsInRoleAsync(user, "Consumer");
        disabled = await userManager.IsInRoleAsync(user, "Disabled");
    

【讨论】:

以上是关于在 Blazor 服务器中使用 NavigationManager NavigateTo 强制加载不会重新加载整个索引的主要内容,如果未能解决你的问题,请参考以下文章

在 Blazor 中使用带有 AddDbContextFactory 的标识

.net Core 的实体框架 6。在 Blazor 服务器端

不变违规:元素类型在 createMaterialTopTabNavigator()/MaterialTopTabView 渲染方法中无效,React Native w/React Navigatio

如何在服务器端 Blazor 中访问 HttpContext?

如何在 Blazor 服务器端模拟延迟?

在 blazor 中使用自定义组件时在注入的差异服务中调用 HttpContextAccesor 后为 null