我要将网站移植到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。
答案 0 :(得分:0)
routes.MapRoute(
name: "Products",
url: "collections/products/{action}/{productName}",
defaults: new { controller = "Products",
action = "GetProductionByName",
id = UrlParameter.Optional }
);
您的外观将类似于 collections / products / GetProductionByName / productname ,只需放置或写下产品名称并进行查询以按名称查找产品,然后在视图中显示要显示的列