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
相关产品推荐
相关产品推荐

