我正在使用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", "" } }
);
感谢任何帮助
感谢
答案 0 :(得分:0)
Posts
和News
路由具有完全相同的URL签名。也就是说,具有2个段的任何 URL将始终与Posts
路由匹配,并且News
路由是无法访问的执行路径。
您需要使用一个或多个常量段或一个或多个约束来确保有两段路由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语句。如果条件匹配,则路线将返回。但是如果你有两条路线都匹配相同的条件,第一条路线将永远胜利而第二条路线将无法到达。