2009-04-07 2 views
7

프레임 워크에 익숙해지기 위해 ASP.NET MVC의 첫 번째 프로젝트로 TinyURL을 복제하려고합니다.TinyURL은 ASP.NET MVC와 같은 라우팅을 사용합니까?

URL 라우팅은 여전히 ​​나에게 약간 혼란 스럽다. 특히 컨트롤러/액션/ID에서 벗어난 경우.

TinyURL.com이 경로를 처리하는 것과 비슷한 간단한 MVC 닌자가 간단한 URL 경로를 설정할 수 있습니까? 예를 들어

:

www.tinyurl.com/는

인덱스 페이지로 리디렉션합니다. 따라서 매개 변수가 전달되지 않으면 단순히 Index() 뷰를 호출하십시오.

그러나 tinyurl 해시를 전달하면 redirect() 액션을 호출해야합니다.

그래서

, 어떻게 내가이 사용자 정의 경로를 설정하는 방법에 대한 갈 것 www.tinyurl.com/fbc13?

routes.MapRoute( 
       "Default",        // Route name 
       "{tinyhash}",       // URL with parameters 
       new { controller = "Link", action = "ReDirect", tinyhash = "" } // Parameter defaults 
      ); 

그냥 URL에 어떤 해시 페이지를 방문하는 경우 때문에 이것은 매우 옳지 않아, 나는 그것을 대신, 인덱스를 호출 할 때) (리디렉션에 조치를 불이행있어() 메소드를 호출합니다.

경로와 같은 기본 TinyURL을 모방하는 방법에 대한 제안 사항은 무엇입니까?

답변

12

올바른 길을 가고 있습니다. 빈 경로를 만들면 리디렉션되지 않습니다.

routes.MapRoute( 
    "Default", 
    "", 
    new { controller = "Home", action = "Index" } 
); 

하고 또는 당신은 단지 컨트롤러가 tinyhash 값을 확인하고 비어있는 경우 다른보기를 표시 할 수 기본 하나

routes.MapRoute( 
    "Redirect", 
    "{tinyhash}", 
    new { controller = "Link", action = "ReDirect", tinyhash = "" } 
); 

로 변경합니다. (즉 해킹 된)

+0

@benrick, 고마워! – KingNestor

관련 문제