2010-08-12 2 views
9

: {페이지} 없을 때 ASP.NET MVC 2에서 제약 조건이있는 라우팅 매개 변수 (선택 사항)? 나는이 같은 경로가있는 경우

routes.Add(new Route("{controller}/{page}", 
    new RouteValueDictionary 
    { 
     { "page", UrlParameter.Optional } 
    }, 
    new RouteValueDictionary 
    { 
     { "page", @"[Pp]age\d+" } 
    }, 
    new MvcRouteHandler() 
)); 

그런 다음 경로는 나는 그것이 일치하는 제약 조건을 제거하지만 경우 일치하지 않습니다. 버그 또는 기능입니까?

답변

7

이것은 기능입니다. 매개 변수가 선택적 인 경우 제약 조건은 어떻게 일치합니까? 문제를 해결하려면 "페이지"의 기본값을 "Page1"로 설정하거나 정규 표현식을 "([Pp] age \ d +)로 바꾸시겠습니까?" (나는 이것에 대해 확신 할 수 없으며 atm을 테스트 할 수 없다).

+1

감사합니다. UrlParameter 대신 기본값을 설정합니다. 선택 사항은 트릭을 수행했습니다. 정규 표현식을 변경하지 못했습니다. – ciscoheat

+0

정규식이 작동하지 않습니까? 그것은 나를 위해 작동합니다. –

8

나는 을 사용하고 있습니다.^$ | : (^ $ | [Pp] age \ d +와 같이) 정규식 내에서. 나는 이것에 대한 해답을 찾고있는 동안이 질문을 발견하고 여기에서 찾은 것을 더할 것이라고 생각했다.

routes.MapRoute(
    name: "News Archive", 
    url: "News/{page}", 
    defaults: new { controller = "news", action = "List", page= UrlParameter.Optional }, 
    constraints: new { page= @"^$|[0-9][0-9]" });