누군가가이 문제에 대해 밝혀 줄 수 있는지, 제게 미치겠습니다!ASP.NET MVC 3에서 잘못된 경로를 선택했습니다.
라우트는 :
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"DefaultOrderingRoute", // Route name
"{controller}/{action}/{id}/{slug}", // URL with parameters
new { controller = "Order", slug = UrlParameter.Optional }, // Parameter defaults
new { controller = "^Order$" }
);
routes.MapRoute(
"DefaultImageRoute", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Image", }, // Parameter defaults
new { controller = "^Image$" }
);
routes.MapRoute(
"FooterRoute", //route for invoking actions for the Footer
"{controller}/{action}", // URL with parameters
new { controller = "Footer", }, // Parameter defaults
new { controller = "^Footer$" }
);
routes.MapRoute(
"DefaultDealRoute", // Route name
"{city}/{category}/{id}/{slug}", // URL with parameters
new { category = Deals.Globals.Global.CATEGORY_ALL_NAME, controller = "Deal", action = "Details", slug = UrlParameter.Optional }, // Parameter defaults
new { controller = "^Deal$", id = @"\d+" }
);
routes.MapRoute(
"DealRouteForCategory", // Route name
"{city}/{category}", // URL with parameters
new { city = "", category = Deals.Globals.Global.CATEGORY_ALL_NAME, controller = "Deal", action = "Details" }, // Parameter defaults
new { controller = "^Deal$" }
);
}
나는 후드 아래에 무슨 일이 일어나고 있는지 볼 수 routedebugger에 대한 참조를 추가해야합니다. 선택된 URL에 대한 그래서 :
AppRelativeCurrentExecutionFilePath :
http://my.SERVER.IP/VirtualDirectoryName/Order/PayPalNotify/9/blabla
의 URL 디버거는 다음을 보여줍니다 (내가 기대 한 정확히) ~/주문/PayPalNotify/9/adfaf을!
디버거는 또한 DefaultOrderingRoute 및 DefaultDealRoute 경로가 일치 함을 보여줍니다 (경로에 제한이 있으므로 기대하지 않았습니다!).
또한 유사한 경로가 있음을 보여준다
경로 일치{컨트롤러}/{동작} 경로 데이터/{ID}/{슬러그}
:
controller: Deal
action: Details
id: 9
slug: adfaf
city: Athens
category: All
이것이 어떻게 가능한지?? 내가 도대체 뭘 잘못하고있는 겁니까?
추신. 나는 을 재발행함으로써 정확한 경로가 실행되는 것을 발견했습니다!
기본 거래 경로에'{controller}'및'{action} '이 없습니까? 그 경로를 목록의 맨 위로 옮기려고 했습니까? 라우팅은 첫 번째 경로에서 일치하므로 만족할 수 있습니다. – mattytommo
@mattytommo 문제는 라우팅이 올바른 URL 상대 부분 (/ Order/PayPalNotify/9/blabla)을 나타내지 만이 수율을 완전히 다른 것으로 토큰 화하는 것입니다 (값이있는 표 참조). 이것이 나를 미치게 만드는 이유입니다. 노선의 순서는보다 구체적인 경로에서 좀 더 일반적인 경로로 항상 이뤄져야합니다 (이것이 제가 연습하고있는 것입니다) –