2011-11-13 2 views
3

사용자 URL을 실제 URL로 라우팅하기 위해 전역 파일에 RegisterRoutes 메소드를 사용하고 있습니다.MVC 3 - ActionLink

routes.MapRoute("Blog", 
       "blog/dp/{id}", 
       new { controller ="Blog", action = "Details" }); 

당신이 짐작 했겠지만, 블로그에 대한 자세한 사항는 작업입니다 컨트롤러와 입니다.

그래서 문제는 다음 코드는 URL에 dp 단어가있는 URL을 생성하지 않는다는 것입니다. 그건 그렇고, 나는 액션 이름을 바꾸고 싶지 않아.

@Html.ActionLink("headline", "Details", "Blog", new { id="1200" }, null) 

미리 감사드립니다)

+0

URL 경로가 올바르게 있습니까? 'http : // site/blog/dp/1200' URL을 입력하면 올바른 페이지로 연결됩니까? 동일한 컨트롤러에 매핑되는 다른 경로가 있습니까? 질문에 모든 경로를 포함하는 것이 도움이 될 수 있습니다. –

+0

그래, 그것은 올바른 페이지로 라우팅;) 내 문제는 actionlink이 "http : // site/Blog/Details? id = 1200"을 생성한다는 것입니다. –

답변

3

ActionLink를 사용하는 대신 RouteLink를 사용할 수 있습니다.

@Html.RouteLink("headline", "Blog", new { controller = "Blog", action = "Details" }) 

RouteLink 방법에 대해 자세히

MSDN에서 찾을 수 있습니다하십시오 RouteLink에서 명시 적으로 경로 이름을 전달할 수 있습니다. 순서를 재정렬하면 작업을 수행 할 수 있지만 이는 매우 취약한 메커니즘입니다.

1

는 ActionLink는 질문에 제공하는 것과 다른 경로를 사용 할 수있다. 이 노선 전에 신고 된 노선이 있습니까?

경로는 사용자가 지정한 순서대로 일치합니다. 그래서, 예를 들어, 당신은 뭔가가 있다면이 경로 전에 선언

routes.MapRoute("Blog", 
       "blog/dp",  // {id} is not provided in this one 
       new { controller ="Blog", action = "Details" }); 

을 :

routes.MapRoute("Blog", 
       "blog/dp/{id}", 
       new { controller ="Blog", action = "Details" }); 

첫 번째 경로가 처음으로 일치 할 것입니다 그리고 당신은 볼 것이다/블로그/DP/ID = 1200/blog/dp/1200 대신.

+0

답변을 주셔서 감사합니다. 그러나 MapRoutes가 정상적으로 작동하고 내 문제는 actionlink입니다. 언급 한 시나리오에서 사용할 수 없습니다 .BTW, 태그를 사용하여이 문제를 우회 할 수 있음을 알고 있습니다. –