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

如何在同一个ASP.NET Core项目中同时使用MVC与Razor Page?

ASP.NET Core Razor Pages项目集成MVC功能配置方案

1. 服务注册修正

ASP.NET Core 3.0及以上版本中,需要明确同时注册Razor Pages和MVC控制器+视图服务,修改Startup.cs(或.NET 6+的Program.cs)的服务注册逻辑:

  • 保留原有Razor Pages的服务注册
  • 新增MVC控制器与视图的服务注册,不要仅依赖过时的services.AddMvc()配置
// 原有Razor Pages服务保留
services.AddRazorPages();
// 新增MVC控制器+视图支持
services.AddControllersWithViews();

2. 端点配置修正

中间件管道的端点配置中必须同时添加Razor Pages和MVC的路由映射,缺少MVC路由会直接导致控制器路径404:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 原有中间件(异常处理、静态文件、路由、授权等)顺序保持不变
    app.UseEndpoints(endpoints =>
    {
        // 原有Razor Pages端点保留
        endpoints.MapRazorPages();
        // 新增MVC控制器路由映射
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

如果使用.NET 6+ 顶层语句的Minimal API风格项目,上述服务注册和端点映射逻辑一致,对应添加到Program.cs即可。

3. 控制器与视图结构校验

  • 控制器类必须放在Controllers文件夹下,继承Controller基类,且类名以Controller为后缀,示例:
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
  • 视图文件必须符合MVC路径约定:Views/[控制器名称]/[动作名称].cshtml,上述Home控制器的Index动作对应的视图路径应为Views/Home/Index.cshtml,共享视图可放在Views/Shared目录下。

4. 路由冲突排查

  • 相同路径下Razor Pages路由优先级高于MVC控制器路由,确认你访问的MVC路径没有被已有的Razor Pages页面占用。
  • 按上述默认路由配置,访问/[控制器名]/[动作名]即可触发对应MVC逻辑,比如上述示例访问/Home/Index即可返回对应视图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:02