2014-10-06 2 views
0

나는 다음과 라우터 정의를 보여 온라인 기사 읽고있다 : -이해 Asp.net MVC 경로 설정

public static void RegisterRoutes(RouteCollection routes) { 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute(null, 
205 
"", 
new { 
controller = "Product", action = "List", 
category = (string)null, page = 1 
} 
); 
routes.MapRoute(null, 
"Page{page}", 
new { controller = "Product", action = "List", category = 
(string)null }, 
new { page = @"\d+" } 
); 

는하지만이 라우터 규칙이 의미하는 무엇을 이해하고 수를 그들은 일하러가는 방법, 난 일반적으로 라우터 규칙을 수정하지 않고 그대로 기본 정의를 유지합니까? 감사합니다.

답변

0

솔직히 새로운 응용 프로그램을 만들고 경로를 테스트하고 싶지 않습니다. 예기치 않은 문제가 없다고 가정하면 다음과 같이 처리됩니다.

routes.IgnoreRoute ("{resource} .axd/{* pathInfo}"); < - 리소스 파일 다운로드 시도를 무시하도록 지정합니다.

경로 이름이 있어야하는 곳의 null. 그들은 이름을 지정하지 않습니다. 나는 당신이 쿼리 문자열에 범주를 추가하지 않으면 문자열에 캐스팅 된 null이 할당 된 경우 205가 제품 ID 인 것으로 추측하고 있습니다. ""작업은 기본적으로 "목록"으로 기본 설정됩니다. 그건 좀 이상해 보입니다. 테스트를 거치지 않으면 빈 문자열 또는 null 값을 제공합니다. 이 페이지는 페이지를 탐색하는 데 사용됩니다. 이 라우트의 상당 부분은 특정 서버 측 조치에 종속됩니다.

routes.MapRoute(null, 
205 
"", 
new { 
controller = "Product", action = "List", 
category = (string)null, page = 1 
} 
); 

마지막 항목은 컨트롤러 작업의 기본값을 설정합니다. 새로운 한 부분은 유효한 값을 0-9 사이의 숫자로 제한하는 정규 표현식 인 "new {page = @"\ d + "}이고 +는 1 개 이상의 숫자를 필요로합니다. } < -. 당신이 좀 더 구체적인 경로 처리를하고 싶었다 경우 사용자 정의 routerhandler 방법은 경로와 연관 될 것입니다 자세한 내용은 IRouteHandler 검색

routes.MapRoute(null, 
"Page{page}", 
new { controller = "Product", action = "List", category = 
(string)null }, 
new { page = @"\d+" } 
); 

을 나는 희망이 도움이 라우팅 때로는 진짜 고통이 될 수 있습니다...