ASP.NET路由,简单问题

时间:2012-10-04 20:51:46

标签: c# asp.net-mvc asp.net-mvc-routing

我有以下内容:

    routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");

    routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
    routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");

当然,正如您可能已经猜到的那样,我永远不能在我的网站上访问/产品,因为它会自动将我重定向到〜/ Page.aspx。 有没有办法解决这个问题并允许路由到其他“目录”,同时在我的域的根目录上维护一个动态页面名称?

谢谢!

3 个答案:

答案 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
路线先到先得。如果它成为路线1,那就是它所需要的路线。 {PageName}与所有内容完全匹配,首先是