2015-02-20 3 views
0

Я использую asp.net routing для отображения некоторых страниц, но это противоречиво, первые 2 работают, но третий идет на второй маршрут, хотя у меня есть отдельная страница для него Работа.Проблема маршрутизации 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

В Posts и News маршруты имеют точно такой же URL подписи. То есть любой URL-адрес с двумя сегментами всегда будет соответствовать маршруту Posts, а маршрут News - недостижимый путь выполнения.

Вам необходимо либо использовать 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 } } 
); 

Подумайте о маршрутах, таких как оператор case switch. Если условие соответствует, маршрут вернется. Но если у вас есть 2 маршрута, которые будут совпадать с одним и тем же условием, первый будет всегда выигрывать, а второй будет недоступен.

Смежные вопросы