2012-11-23 2 views
2

여기에 문제를 재현하는 절차가 나와 있습니다.Routelink가 올바른 URL을 반환하는 방법은 무엇입니까?

  1. 새로운 mvc 4 프로젝트를 시작하십시오.
  2. routes.MapRoute(
         name: "Test", 
         url: "Test/{action}", 
         defaults: new { controller = "Test", action = "Index" } 
    ); 
    
  3. Index.cshtml 및 About.cshtml

    @Html.RouteLink("link to TestController", "Test") 
    

에 다음을 추가 단지 "기본"경로 전에)합니다 (RegisterRoutes 메서드에 다음 줄을 추가 생성 된 html 코드가 2 페이지마다 다른 것을 알 수 있습니다. 나는 URL이 "/ Test"가 Index.cshtml을 위해 정확하게 표현 될 것이라고 기대하지만, About.cshtml에 대해서는 "/ Test/About"이된다.

제 질문은 문서화 된 올바른 URL을 생성하는 방법이 있는지입니다. 위의 예제는 데모 목적으로 만 작성되었습니다. 내가 라우팅 테이블 정보를 사용하여 메뉴를 생성하고 싶습니다.

답변

3

엔진이 현재 페이지 ("색인", "정보")에서 action 경로 값을 설정하고있는 것으로 보입니다. 그래서이 문제를 해결하는 하나의 방법이다 "해제"그 경로 값 :

@Html.RouteLink("link to Test Controller", "Test", new { action = String.Empty }) 
+0

내가 찾은 생성합니다. –

2

등록 경로

routes.MapRoute(
       name: "TestUrl", 
       url: "Test", 
       defaults: new { controller = "TestController", action = "TestAction" } 
      ); 

는 지금

@Html.RouteLink("Test", "TestUrl") 

귀하의 URL이 TestAction.cshtml

에 다음을 추가/테스트, 이것이 당신을 도울 것이라는 것을 희망하십시오.

1

가장 빠른 방법은 빈 동작을 지정하는 것입니다.

@Html.RouteLink("link to TestController", "", "Test") 

이 사용자가 지정한`컨트롤러 = String.Empty`뿐만 아니라 RouteConfig에 정의 된대로 기본 URL을 렌더링하는 얻기 위해해야한다고 /Test

관련 문제