Blazor .NET 8添加自定义页面出现404错误的求助
问题分析与解决方法
可能的错误原因及对应修复步骤:
1. @page 指令缺少根路径斜杠
Razor Pages 的 @page 指令需要绝对路径(以 / 开头)来定义根级路由,否则会被解析为相对路径。
- 修复:将
Create.cshtml中的@page "Agency/Create"修改为:@page "/Agency/Create"
2. NavLink 的 href 使用了相对路径
Blazor 的 NavLink 组件如果使用相对路径,会基于当前页面的路由拼接,可能导致错误的跳转地址。
- 修复:将 NavLink 的 href 修改为绝对路径:
<div class="nav-item px-3"> <NavLink class="nav-link" href="/Agency/Create"> <span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Agency </NavLink> </div>
3. Razor Pages 配置缺失或路径映射错误
如果你的 Razor Pages 放在非默认的 Components/Agency/Pages 目录下,需要确保 Program.cs 中正确配置了 Razor Pages 的扫描路径:
- 在 Program.cs 中添加或修改以下代码:
builder.Services.AddRazorPages(options => { options.RootDirectory = "/Components/Agency/Pages"; }); // 确保中间件顺序正确,放在 Blazor 中间件之前 app.MapRazorPages(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host");
4. 代码后置类未继承 PageModel
Razor Pages 的代码后置类必须继承自 PageModel,否则无法被识别为有效页面:
- 检查
CreateModel.cs:using Microsoft.AspNetCore.Mvc.RazorPages; namespace App.Web.Components.Agency.Pages; public class CreateModel : PageModel // 必须继承 PageModel { public void OnGet() { // 页面逻辑 } }
5. 路由冲突或缓存问题
- 清理浏览器缓存,或者使用隐私模式测试,排除路由缓存导致的问题。
- 检查是否有其他页面或路由定义了相同的
/Agency/Create路径,导致冲突。
内容的提问来源于stack exchange,提问作者misuk
相关产品推荐
相关产品推荐

