ASPNET MVC-将所有URL子文件夹路由到单个控制器

时间:2019-06-01 21:57:21

标签: asp.net-mvc

我要将网站移植到MVC5,并且需要确保URL结构相同。旧站点具有以下URL:

https://www.example.com/collections/products
https://www.example.com/products/product1-name
https://www.example.com/products/product2-name

对于第一个URL,我有一个ProductsController,效果很好:

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

但是,我还没有找到一种将所有URL请求(例如/ products / product1-name,/ products / product2-name)映射到单个控制器的方法。我看了所有的东西,但是还没有成功。

我可以为product1-name,product2-name等创建单独的控制器,但是有成千上万的产品。本质上,product1-name,product2-name是将从数据库中返回的产品ID。

1 个答案:

答案 0 :(得分:0)

routes.MapRoute(
            name: "Products",
            url: "collections/products/{action}/{productName}",
            defaults: new { controller = "Products", 
                            action = "GetProductionByName",
                            id = UrlParameter.Optional }
        );

您的外观将类似于 collections / products / GetProductionByName / productname ,只需放置或写下产品名称并进行查询以按名称查找产品,然后在视图中显示要显示的列