我有几个 ASP.NET MVC 控制器。其中许多采用一个或多个必需的值(例如 ids)。因为这些值是必需的,所以我想让它们成为 url 路径的一部分,而不是查询字符串参数。例如:
// route should be MyController/Action1/[someKindOfId1]
public ActionResult Action1(int someKindOfId1) { ... }
// less commonly:
// route should be MyController/Action1/[someKindOfId2]/[someKindOfId3]
public ActionResult Action2(int someKindOfId2, int someOtherKindOfId3) { ... }
我正在寻找一种方法来映射这些路线,而无需手动列出每条路线。例如,我目前这样做:
routes.MapRoute(
"Action1Route",
"MyController/Action1/{someKindOfId1}",
new { controller = "MyController", action = "Action1" }
);
我考虑过的一些方法: * 使用默认的 {controller}/{action}/{id} 路由,然后将我的参数重命名为 id 或(不确定这是否有效)使用 [Bind] 属性来允许绑定它们到 id 路由值,同时仍然具有描述性名称。这仍然将我限制在一个通用的控制器/操作基础 URL(不错,但也不是最灵活的,因为它将 URL 与当前代码组织联系在一起)。* 创建一个属性,我可以将它放在操作方法上来配置它们的路由。然后我可以反映所有控制器并在应用程序启动时配置路由。
是否有这样做的最佳实践/内置方法?