【发布时间】:2019-06-01 21:57:20
【问题描述】:
我正在将网站移植到 MVC5 并且需要确保 URL 结构相同。旧网站有以下网址:
https://www.example.com/collections/products
https://www.example.com/products/product1-name
https://www.example.com/products/product2-name
我有一个 ProductsController 用于第一个 URL,这很好用:
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。
【问题讨论】:
-
通过添加另一个参数来解决这个问题: routes.MapRoute( name: "ProductItem", url: "products/{name}", defaults: new { controller = "ProductItem", name = UrlParameter.可选,action = "Index", id = UrlParameter.Optional });
标签: asp.net-mvc