Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net路由问题和冲突_Asp.net_Webforms - Fatal编程技术网

asp.net路由问题和冲突

asp.net路由问题和冲突,asp.net,webforms,Asp.net,Webforms,我正在使用asp.net路由显示一些页面,但它是冲突的,前两个正在工作,但第三个将转到第二个路由,即使我有一个单独的页面供其工作 routes.MapPageRoute( "post", "{postname}-{postid}/", "~/post.aspx" ); routes.MapPageRoute( "Posts", "{Category}/{PageNo}/",

我正在使用asp.net路由显示一些页面,但它是冲突的,前两个正在工作,但第三个将转到第二个路由,即使我有一个单独的页面供其工作

routes.MapPageRoute(
          "post",
          "{postname}-{postid}/",
          "~/post.aspx"
      );

routes.MapPageRoute(
          "Posts",
          "{Category}/{PageNo}/",
          "~/posts.aspx", true,
            new RouteValueDictionary { { "PageNo", "" } }
      );

routes.MapPageRoute(
          "News",
          "{News-Category}/{PageNo}/",
          "~/news.aspx", true,
            new RouteValueDictionary { { "PageNo", "" } }
      );
谢谢你的帮助


谢谢

这些
帖子
新闻
路线具有完全相同的URL签名。也就是说,任何包含2个段的URL都将始终匹配
帖子
路由,而
新闻
路由是一个无法访问的执行路径

您需要使用1个或多个常量段或1个或多个约束,以确保有2段路由
Posts
News
路由可能会丢失

routes.MapPageRoute(
      "post",
      "{postname}-{postid}",
      "~/post.aspx"
  );

routes.MapPageRoute(
      "Posts",
      "Category/{PageNo}",
      "~/posts.aspx", true,
        new RouteValueDictionary { { "PageNo", UrlParameter.Optional } }
  );

routes.MapPageRoute(
      "News",
      "News-Category/{PageNo}",
      "~/news.aspx", true,
        new RouteValueDictionary { { "PageNo", UrlParameter.Optional } }
  );
把路由想象成一个switch case语句。如果条件匹配,路由将返回。但是,如果您有两条路线都符合相同的条件,那么第一条路线将始终获胜,第二条路线将无法到达