2012-09-06 5 views
0

A, F 또는 L로 시작하는 URL이 인덱스 작업에 대해 으로 지정되는 다음 경로가 있습니다. 예리한 정규 표현식이 사용 된 것처럼 보입니다.MVC4를 사용하는 인덱스 메서드에 매개 변수로 경로 동작을 전달하는 방법

 context.MapRoute(
      "content", 
      "{page}/{title}", 
      new { controller = "Server", action = "Index" }, 
      new { page = @"^[AFL][0-9A-Z]{3}$" } 
     ); 

나는 비슷한 일을하고 싶지만 이번에는 색인 작업에 가서 단어 "메뉴", "목표"를 전달하는 메뉴, 목적, 페이지 또는 항목의 액션이있는 URL을 직접, "페이지"또는 "주제"를 인덱스 작업에 매개 변수로 사용하십시오.

누군가 내가이 작업을 수행 할 수있는 방법을 보여줄 수 있습니까? C#과 같은 정규식 버추얼처럼 보입니다. 두 번째로 필요한 표현식을 수행하는 방법을 잘 모르겠습니다. 경로입니다.

+0

는 *이 *는 C 날카로운 정규 표현식처럼 보인다. 이것은 물어보기 전에 당신이 문서를 보지 않았다는 것을 알려줍니다 ... – devundef

답변

1

당신이 필요로하는 간단한 경로 제약 조건입니다 :

context.MapRoute(
     "content", 
     "{page}/{title}", 
     new { controller = "Server", action = "Index" }, 
     new { page = @"Menus|Objectives|Pages|Topics" } 
    ); 

다음 액션 메소드 서명은 다음과 같이 표시됩니다

public ActionResult Index(string page) 
{ 
    ... 
    return View(); 
} 
0

여기 예를 살펴 ...

http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-route-constraint-cs 당신은 매개 변수를 사용하여 경로를 정의 할 수 있습니다. 그것을 테스트하지 않은하지만 작동합니다 ... 단어 경계를 찾습니다 \b 정규식에서 ... : 당신을 Asuming

routes.MapRoute(
    "Content", 
    "Content/{TypeOfAction}", 
    new {controller="Content", action="Index"}, 
    new {@"\b(Menus|Objectives|Pages|Topics)\b"} 

); 

매개 변수

대답을 편집

로 TypeOfAction을 처리하는 색인 ​​작업과 ContentController이 http://www.regular-expressions.info/wordboundaries.html http://www.regular-expressions.info/alternation.html

+0

하지만 당신이 보낸 경로는 TypeOfAction에서 무엇이든 허용 할 것입니다. 내가 필요한 것은 질문에있는 사람들만을위한 것입니다. –

+0

답변을 편집했습니다 ... 구문이 내 머리에서 벗어 났으므로 약간 조정해야 할 수도 있습니다 .../b는 Regex를 통해 단어 경계를 찾습니다. – silverfighter

관련 문제