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

ASP.NET Core中如何配置子文件夹下视图与控制器的路由?

解决ASP.NET Core路由与控制器文件夹结构匹配问题

正确的路由配置方式

首先确保你的控制器类符合ASP.NET Core命名约定(类名以Controller结尾),通过控制器级别的Route属性统一设置前缀,再结合Action的Route属性拼接完整路径,这样既清晰又便于维护:

1. 控制器类的路由配置

在Controllers/CaseConverters文件夹下创建控制器(比如LowerCaseConverterController.cs),在类上添加路由前缀:

// Controllers/CaseConverters/LowerCaseConverterController.cs
[Route("CaseConverters")]
public class LowerCaseConverterController : Controller
{
    [HttpPost]
    [Route("lower-case-converter")]
    public IActionResult Index(BassModel model)
    {
        // 业务逻辑代码
        
        // 默认视图路径:Views/CaseConverters/LowerCaseConverter/Index.cshtml
        return View();
    }
}

配置完成后,该Action的完整路由为CaseConverters/lower-case-converter,发送POST请求到这个路径即可触发方法。

2. 视图路径匹配

你已在Views下创建CaseConverters文件夹,需要在其中再创建与控制器名称对应的子文件夹(比如LowerCaseConverter),将Index.cshtml放入该子文件夹。若不想创建控制器名称的子文件夹,可在返回视图时指定绝对路径:

return View("~/Views/CaseConverters/Index.cshtml");

排查之前配置无效的原因

你之前使用[Route("~/CaseConverters/lower-case-converter")]或[Route("/CaseConverters/lower-case-converter")]理论上是有效的,可能的问题点:

  • 控制器命名不符合约定:类名未以Controller结尾,框架无法识别为控制器(比如写成LowerCaseConverter而非LowerCaseConverterController)
  • 请求方法不匹配:Action标注了[HttpPost],但使用GET方法访问,会返回404
  • 视图路径错误:视图文件不存在或路径不正确,导致返回500错误,误以为路由无效
  • 路由冲突:其他控制器的路由与该路径重复,导致请求被分流

验证路由是否注册成功

可以通过ASP.NET Core的端点调试功能确认路由是否正确注册:

  1. 在Program.cs的开发环境配置中添加端点调试接口:
if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapGet("/routes", async context =>
        {
            var endpointDataSource = context.RequestServices.GetRequiredService<EndpointDataSource>();
            var routes = endpointDataSource.Endpoints
                .OfType<RouteEndpoint>()
                .Select(e => new { Route = e.RoutePattern.RawText })
                .ToList();
            await context.Response.WriteAsJsonAsync(routes);
        });
    });
}
  1. 启动项目后访问/routes,查看返回的路由列表中是否包含CaseConverters/lower-case-converter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:45:42