You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor中NavigationManager为空引发空引用异常问题求助

问题原因与解决方案

问题根源

  • Blazor组件的@inject属于属性注入,组件构造函数执行时,注入的属性(如NavManager)还未被框架赋值,此时调用NavManager.NavigateTo必然触发空引用异常。
  • Account页的按钮点击方法能正常运行,是因为点击事件触发时,组件已经完成初始化流程,注入的NavManager属性已被正确赋值。

修复方案

将登录校验与跳转逻辑移至组件的生命周期方法中,比如OnInitialized或OnInitializedAsync——这些方法会在组件注入完成后执行,此时NavManager已可用。

修改后的Index.razor代码

@page "/"
@inject NavigationManager NavManager

@code {
    protected override void OnInitialized()
    {
        if (!Auth.isLoggedIn())
        {
            NavManager.NavigateTo("/login");
        }
    }
}

异步场景补充

如果你的登录状态校验是异步方法(比如需要从后端获取),请使用OnInitializedAsync:

@page "/"
@inject NavigationManager NavManager

@code {
    protected override async Task OnInitializedAsync()
    {
        if (!await Auth.isLoggedInAsync())
        {
            NavManager.NavigateTo("/login");
        }
    }
}

内容的提问来源于stack exchange,提问作者Jasper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:25:51