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

ASP.NET MVC属性路由参数异常问题求助

问题分析与解决方案

问题原因

你的核心问题是特性路由未生效,导致请求被传统默认路由错误匹配:
你给Index方法添加了[Route("/Books/{id?}")]特性路由,但如果项目中仅配置了传统默认路由(MapControllerRoute),却未启用特性路由支持(MapControllers),这个特性路由不会生效。此时访问/Books/xxx会触发传统路由逻辑:将Books识别为控制器名,xxx识别为Action名,但你的BooksController里只有Index方法,不存在对应名称的Action,因此抛出异常。

解决步骤

打开项目的Program.cs文件,调整路由配置:

  • 如果你需要保留传统默认路由,必须添加启用特性路由的代码:
    // 保留传统默认路由(可选)
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
    // 关键:启用特性路由支持
    app.MapControllers();
    
  • 如果你不需要传统默认路由,可直接仅保留特性路由配置:
    app.MapControllers();
    

额外优化建议

你可以将特性路由改为更灵活的写法,无需硬编码控制器名称:

[Route("[controller]/{id?}")]
public IActionResult Index(string id)
{
    return View(id);
}

这样当控制器名称修改时,路由规则会自动同步,减少维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:15:29