ID 和动作都在同一级别的 MVC 路由

MVC routing with both ID and action at same level

我希望能够制作一个同时具有同一级别的操作和 ID 的 MVC 路由。

示例: 如果呼叫

HTTP://www.something.com/F/GetMyData 

然后调用 GetMyData 操作

如果呼叫

HTTP://www.something.com/F/dfeTD53F 

并且没有找到具有此名称的操作它假定 "dfeTD53F" 是一个 ID 控制器 F 应该使用该 ID 调用。

这可能吗?如何实现?

这只是糟糕的应用程序设计吗?

现在,我的 route.config 中有通往 F 下所有特定操作的路线,到时候可能会变得非常混乱。

我的解决方案是创建一个 "catch all" 路由(作为最后一个条目),然后在控制器中手动处理它。

        routes.MapRoute(
            name: "CatchAll",
            url: "{*url}",
            defaults:  new { controller = "CatchAll", action = "Index" }
        );

这不是一个优雅的解决方案,但很好.. MVC 路由从一开始就不优雅。