首页 > 解决方案 > 如何在 MVC 中路由到 url.com/ControllerA/ControllerB/ControllerB 的操作

问题描述

所以我有一个ProjectsController带有默认路由 url.com/projects/action 的控制器,每个项目都有一个控制器,比如MosaController. 项目的 URL 应为 url.com/projects/{ProjectName}/action,因此在 Mosa 示例中为 url.com/projects/Mosa/action。

我在RouteConfig中设置了一个可以解决这个问题的路由

routes.MapRoute(
    name: "ProjectViewRoute",
    url: "projects/{controller}/{action}",
    defaults: new { controller = "Projects", action = "Index" }
);

这行得通,我可以调用 url.com/projects/action 和 url.com/projects/Mosa/action 并选择正确的控制器,但是当我调用 URL url.com/{ProjectName}/action 时,它会调用该操作,因为的默认路由。有没有办法忽略默认路由?还是有更好的方法来连接这样的控制器?

谢谢!

标签: c#asp.netmodel-view-controller

解决方案


您是否需要应用程序其他部分的默认路由?如果没有,为什么不简单地删除它并只拥有 ProjectViewRoute?或者考虑将“项目”创建为 MVC“区域”(https://www.c-sharpcorner.com/article/getting-started-with-area-in-asp-net-mvc/)。这将消除项目区域之外的项目特定路线。


推荐阅读