我有以下内容:
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
当然,正如您可能已经猜到的那样,我永远不能在我的网站上访问/产品,因为它会自动将我重定向到〜/ Page.aspx。 有没有办法解决这个问题并允许路由到其他“目录”,同时在我的域的根目录上维护一个动态页面名称?
谢谢!
答案 0 :(得分:1)
我通常会写一个HttpModule来处理这个问题,但我想这些规则应该首先匹配。试试这个:
routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
答案 1 :(得分:1)
以相反的顺序排列路线 - 最具体的是租赁特定的。重定向到路线时,它将搜索直到找到匹配,然后停止。
routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
答案 2 :(得分:0)
你应该可以翻转路线
routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
/products
应该/products.aspx
/product/foo
应该/products.aspx
/foo
应该/pages.aspx
{PageName}
与所有内容完全匹配,首先是