2011-03-22 2 views
0

안녕하세요!ASP.NET MVC에서 발신 URL 생성 경로가 어떻게 선택됩니까?

나는 ASP.NET MVC 2 T4MVC을 사용하고 있는데 내가 라우팅 테이블에이를 추가 할 때 일부 코드 마법

을 일어나고있는 것 같다

routes.MapRoute(
    "Login", 
    "login/", 
    MVC.Profile.Login() 
); 

어떻게 프레임 워크는 내가이 원하는 것을 알고 않습니다 나가는 URL 생성하기 위해 나는 이런 식으로 뭔가를 쓸 때 뷰에 적용 할 규칙 :

<%: Url.Action(MVC.Profile.Login() %> 

을 내가는 동일한 컨트롤러/액션 (다른 PARAMS로) 여러 다른 규칙이있는 경우 쌍? 어느 것이 선택 될까요? 이 행동에 대해 어느 곳에 나 좋은 설명이 있습니까?

미리 감사드립니다.

답변

1

T4MVC가 제공하는 마법과이 마법이 어떻게 분리되어 있는지 이해하는 데 도움이되는 제안은 무엇입니까?

routes.MapRoute(
    "Login", 
    "login/", 
    MVC.Profile.Login() 
); 

그것은 바로 MVC와 함께이 글을 쓰는 동등의 :

당신은 T4MVC 이것을 쓸 때

routes.MapRoute(
    "Login", 
    "login/", 
    new { controller = "Profile", action = "Login" } 
); 

을 그리고보기 :

Url.Action(MVC.Profile.Login()) 

은 같은 것

Url.Action("Login", "Profile") 

T4MVC는 강력한 타이핑/인텔리 센스의 이점을 제공하지만 결국에는 직선적 인 MVC와 동일합니다.

희망 사항을 통해 도움이됩니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 그래서 같은 컨트롤러에 두 개의 경로가 있다면'/ view/page-2 '형식의 페이징 매개 변수 하나와'/ view /'가없는 경로 하나를 사용하여 경로를 사용하여 URL을 생성 할 경로 이름을 지정해야합니다 'Global.asax'에서 2 위. T4MVC에는 경로 이름에 강력한 유형의 도우미가 없다는 것을 기억합니다. – artvolk

+1

T4MVC가 경로 이름에 강력한 유형의 도우미를 제공하지 않는다는 것이 맞습니다. 그러나 경로 선언과 뷰에서 공용 상수를 정의하는 것만으로도 강력한 타이핑을 얻을 수 있습니다. –

+0

강한 타이핑이 어떻게 작동하는지 더 자세히 설명해 주실 수 있습니까? 뷰/컨트롤러가 경로에 추가 "Areas/MyArea"없이 반환되기 때문에 MvcContrib Portable Area를 사용하고 T4MVC를 사용할 수 없습니다. –

1

경로 패턴을 정의한 순서대로 일치시킵니다. 그게 왜 당신이 마지막 패턴으로 기본 패턴을 가지고 있습니다. 일치하는 패턴을 찾으면 곧바로 찾아냅니다.

편집

매개 변수는 경로 일치하는 동안 무시됩니다. 컨트롤러 메소드가 선택되면 mvc는 모델 바인딩을 사용하여 매개 변수를 메소드 변수에 지정합니다.

사용하려는 URL 구조의 유형을 설명 할 수 있다면 더 많이 도움이 될 것입니다.

+0

일치하는 기준은 무엇입니까? 그냥 컨트롤러 \ 액션이나 매개 변수도? – artvolk

-1

예제가 유효한 MVC가 아니며 일반적으로 컨트롤러 이름, 동작 및 기타 매개 변수를 전달하면 라우팅 엔진은 모든 정보를 사용하여 사용할 경로를 결정하고 정의한 경로가 많을수록 궁금해하는 정보를 확인하는 데 아마도 필요한 정보입니다.

+0

이 메서드는 객체를 받아들이므로 기술적으로 아무 것도 유효합니다. 해당 MVC.Profile.Login() 메서드가 컨트롤러 및 작업 속성이있는 클래스를 반환하면 제대로 작동합니다. 그렇지 않습니까? – mdm20

+0

전화가 실제로 정확하고, T4MVC가 항상처럼 보이는 방식입니다. –

관련 문제