Asp.net mvc 如何在mvc中组合两个控制器并执行操作

Asp.net mvc 如何在mvc中组合两个控制器并执行操作,asp.net-mvc,routes,asp.net-mvc-controller,Asp.net Mvc,Routes,Asp.net Mvc Controller,我正在制作一个它拥有的电子商务网站 家庭控制器 类别控制器 产品控制器 现在我想要的是当我点击分类时,路线应该是这样的 www.domain.com/Categories/ www.domain.com/Products/ 当我点击产品时,路线应该是这样的 www.domain.com/Categories/ www.domain.com/Products/ 当我购买手机、pendrive或电视等产品时,路线应该是这样的 www.domain.com/Categories/Produc

我正在制作一个它拥有的电子商务网站
家庭控制器
类别控制器
产品控制器

现在我想要的是当我点击分类时,路线应该是这样的

www.domain.com/Categories/
www.domain.com/Products/
当我点击产品时,路线应该是这样的

www.domain.com/Categories/
www.domain.com/Products/
当我购买手机、pendrive或电视等产品时,路线应该是这样的

 www.domain.com/Categories/Products/pendrive
因为pendrive来自产品,而产品来自类别 所以我想结合两个控制器,这样我就可以得到所需的路线

尝试过类似的方法,但没有成功

routes.MapRoute(
                name: "Default1",
                url: "Categories/{controller}/{action}/{id}",
                defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional}
            );

可以创建具有相同约束的管线,如下所示:

routes.MapRoute(name: "Product",
                url: "Categories/Product/{id}",
                defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional});

只需确保在默认路由之前注册它。

这意味着我可以添加多个控制器以获得完美的url。你能解释一下Maproute名称(即“产品”)有什么关系吗?是否必须与控制器同名。@VivekSharma你仍然有一个控制器,它是productcontroller。第一个参数只是路由名称。我改变了它,使它更具描述性。很抱歉造成混淆。@VivekSharma此路由仅适用于以/categories/product开头的URL。它们是在模板中硬编码的。非常感谢@ufuk,我会尝试一下,我们会回来的;)