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

ASP.NET Core 8 MVC区域路由配置:省略默认Action并路径传Id

在ASP.NET Core 8 MVC中配置区域路由(省略默认Action并通过路径传递Id)

你需要调整区域路由的匹配规则,通过新增更具体的路由优先级来实现省略Index且用路径传递Id的需求,具体配置如下:

app.UseRouting();

// 优先匹配带Id的区域请求,自动映射到Index Action
app.MapAreaControllerRoute(
    name: "DashboardWithId",
    areaName: "Dashboard",
    pattern: "Dashboard/{controller}/{id:int}",
    defaults: new { action = "Index" }
);

// 保留区域默认路由,处理不带Id/指定其他Action的场景
app.MapAreaControllerRoute(
    name: "Dashboard",
    areaName: "Dashboard",
    pattern: "Dashboard/{controller=Home}/{action=Index}/{id?}"
);

app.MapControllerRoute(name: "Default", pattern: "{controller=Home}/{action=Index}/{id?}");

配置说明

  1. 优先级匹配:第一个路由DashboardWithId是更具体的规则,会优先匹配Dashboard/{控制器名}/{数字Id}格式的URL,自动将请求映射到对应控制器的Index方法,无需在URL中显式写Index。
  2. 参数约束:id:int确保只有整数格式的参数会匹配该路由,避免和其他路由规则冲突。
  3. 兼容原有场景:第二个保留的区域默认路由,可处理不带Id或需要指定其他Action的请求。

控制器方法适配

你的现有控制器方法签名无需修改:

public ActionResult Index(int id)

路径中的Id会自动绑定到方法参数,URL后的查询参数(如at=organization&ttid=-1)也会正常被框架处理(若方法中定义了对应参数则自动绑定)。

验证效果

现在访问https://localhost:7280/Dashboard/Waterbody/1245839?at=organization&ttid=-1,会直接触发WaterbodyController的Index方法,id参数值为1245839,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:12:40