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

.NET Core 3.1迁移至.NET 6后Razor页面路由异常求助

.NET 6 Razor自定义路由跳转异常解决方案

问题根因

.NET 6优化了Razor页面与View Component的路由匹配逻辑,当自定义路由对应的页面包含完整HTML结构时,框架会误把非默认目录下的View Component当成匹配项;再加上_ViewImports全局注册的标签助手,直接触发了错误的组件渲染流程,哪怕目标页面根本没用到任何View Component。

解决步骤

1. 锁定View Component扫描目录

在Program.cs里明确指定框架只扫描默认的Components目录,杜绝误识别非预期组件:

builder.Services.AddControllersWithViews()
    .AddViewComponentsAsServices()
    .ConfigureViewComponentOptions(options =>
    {
        options.ViewComponentLocationFormats.Clear();
        // 仅保留默认的组件扫描路径
        options.ViewComponentLocationFormats.Add("/Views/Components/{0}/{1}.cshtml");
        options.ViewComponentLocationFormats.Add("/Views/Shared/Components/{0}/{1}.cshtml");
    });

2. 局部注册标签助手

把_ViewImports里的全局标签助手注册删掉,只在真正需要用View Component的页面单独引用:

  • 移除_ViewImports.cshtml中的@addTagHelper *, 你的项目程序集名称
  • 在需要使用View Component的页面顶部添加:
@addTagHelper *, 你的项目程序集名称

3. 提升自定义路由优先级

在Program.cs配置RazorPageOptions时,把自定义路由放在最前面,确保它先被匹配:

builder.Services.AddRazorPages(options =>
{
    // 自定义路由优先匹配
    options.Conventions.AddPageRoute("/TestPage/TestOptions", "/nav/admin/testoptions");
});

4. 检查页面HTML结构

确保目标页面的HTML语法规范,避免未闭合标签或错误语法导致框架解析混乱:

  • 保证页面有完整的<html>、<head>、<body>标签
  • 排查是否存在未闭合的自定义标签或Razor语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:25:23