Blazor项目中NavigationManager.NavigateTo()跳转失败求助
首要修复:按钮属性错误
你的提交按钮代码存在语法错误:
<button class="btn btn-primary" typeof="submit">Update</button>
这里的属性应该是type="submit"而非typeof="submit"。错误的属性会触发浏览器默认的表单HTTP提交行为,与Blazor客户端导航逻辑冲突,直接导致NavigationException。修正后代码:
<button class="btn btn-primary" type="submit">Update</button>
后续排查方向(若修复按钮后问题仍存在)
确认路由组件加载配置
检查App.razor中的Router组件是否正确包含目标组件所在程序集:<Router AppAssembly="@typeof(App).Assembly"> <Found Context="routeData"> <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> </Found> <NotFound> <LayoutView Layout="@typeof(MainLayout)"> <p>无法找到该页面</p> </LayoutView> </NotFound> </Router>Blazor Server需确认
_Host.cshtml正确引用App组件;WebAssembly需确认wwwroot/index.html中<base href="/" />配置符合部署路径。验证导航调用参数
在Submit方法中显式指定导航参数测试:NavigationManager.NavigateTo("/servers", forceLoad: false);若无效,尝试
forceLoad: true(强制页面刷新,排查客户端路由是否异常)。排查路由冲突与拼写
确保没有其他组件使用@page "/servers"路由,同时保持路径拼写完全一致(避免大小写不一致引发隐性问题)。输出完整异常信息
将捕获到的ex.Message和ex.InnerException完整内容打印出来,根据具体提示定位问题(比如路由未找到、浏览器阻止导航等)。
内容的提问来源于stack exchange,提问作者bkkirk
相关产品推荐
相关产品推荐

