我正在尝试构建一条路由到特定产品页面的路线。
该产品属于一个类别。类别也可以存在于类别中。我正在尝试构建像
这样的URLmy-site.com/products/category/category/category/product
类别数量可以更改,但最后一个参数将始终是产品的名称。
有没有办法为此构建路线?
答案 0 :(得分:2)
我过去遇到了同样的问题,并且与其他人在这里建议你的方式有所不同。大多数解决方案都会讨论* catch-all 参数。在您的情况下,这意味着您必须自己解析产品。手动。因为catch-all参数可能只是路由定义中的最后一个参数。
如果你仔细想想,你可以实际意识到,只要你有所有其他段存在,catch all参数实际上可以在路径中的任何地方定义。所以我写了这样的路由类,它可以完成所有这些并在繁忙的流量网站上成功运行。
我的博文中包含有关它的所有信息以及解决问题的所有代码:
Custom Asp.net MVC route class with catch-all segment anywhere in the URL
这使您可以将路线定义为:
products/{*categories}/{productId}
如果您更进一步考虑catch-all参数,您还可以达到单个路由定义可以具有多个catch-all参数的程度,只要它们之间至少有一个段是静态的。但我的班级无法做到这一点,因为只有一个任意段设置的场景更为常见。