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

引用Razor类库中的Razor页面出现404错误,求排查方案

问题原因与解决办法

你混淆了Blazor组件页面和Razor Pages页面的路由机制——你在Razor类库中创建的是带PageModel的Razor Pages(.cshtml+.cshtml.cs),但一直在用Blazor组件的路由配置,这俩完全不兼容,所以才会出现404。

具体修正步骤

1. 移除无效的Blazor路由配置

把Routes.razor里添加的AdditionalAssemblies参数删掉,恢复成默认配置:

<Router AppAssembly="typeof(Program).Assembly">
    <Found Context="routeData">
        <RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
        <FocusOnNavigate RouteData="routeData" Selector="h1" />
    </Found>
</Router>

这个配置只对Blazor组件(.razor文件)生效,对你的Razor Pages页面没用。

2. 正确注册Razor Pages的路由

在Program.cs里,单独注册Razor Pages路由并指定要扫描的类库程序集,替换掉你之前给Blazor组件加的AddAdditionalAssemblies(如果项目不需要共享Blazor组件的话):

// 先注册Razor Pages路由,引入类库程序集
app.MapRazorPages()
   .AddAdditionalAssemblies(typeof(RazorClassLibrary1.MyFeature.Pages.Page1Model).Assembly);

// 保留Blazor组件的原有注册(如果项目需要Blazor功能)
app.MapRazorComponents<App>()
   .AddInteractiveServerRenderMode();

3. 验证Razor Pages的基础配置

  • 确保Page1.cshtml.cs(PageModel文件)存在且继承自PageModel:
namespace RazorClassLibrary1.MyFeature.Pages;
public class Page1Model : PageModel
{
    public void OnGet()
    {
        // 页面逻辑
    }
}
  • 确保Page1.cshtml的@page指令正确,且引用了对应的PageModel:
@page "/test"
@model RazorClassLibrary1.MyFeature.Pages.Page1Model

<h1>Test Page</h1>

额外说明

如果你的目标是在类库中共享Blazor组件页面(而非Razor Pages),那应该在Razor类库中创建.razor文件(不是带PageModel的.cshtml),再用你之前的Blazor路由配置(Routes.razor加AdditionalAssemblies、Program.cs的AddAdditionalAssemblies),这时候才会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:15:15