2009-05-14 6 views

답변

72

동작 및 경로가 1 : 1 관계 일 필요는 없습니다.

ActionLink는 첫 번째로 일치하는 경로 별 작업 이름을 사용하여 작업에 도착하는 URL을 생성합니다.

RouteLink는 이름 또는 경로 값으로 결정된 특정 경로에 대한 URL을 생성합니다.

+0

+1 멋진 블로그 게시물입니다. 정말 편리합니다. 그리고 너무 많은 가능성이 있음을 보여줍니다. MS 친구들은 가장 빠른 방법 만 구현해야합니다. 그러나 사람들은 차라리 환상적인 람다를 사용합니다. –

+0

안녕하세요, 고마워요.하지만 링크가 깨진 것 같지 않습니다. pls 다시 내게 링크를 제공합니다 감사합니다 – user1006544

+4

우리가 예제를 얻을 수 있습니까? – MaylorTaylor

12

RouteLink는 경로 이름을 사용하므로 경로 이름이 신뢰할 수 있고 상당히 고유하면 사용되는 작업 이름이 변경 되더라도 동일합니다. ActionLink는 특정 컨트롤러의 특정 동작을 링크합니다. 나는 어떤 종류의 링크를 사용하는지에 따라 내 견해를 모두 사용한다!

63

사실, 두 방법의 출력은 동일하지만 약간 다른 방법으로 생성됩니다

Html.ActionLink() 쉽게 빠르게 ActionLinks을 생성 할 수 있습니다, 당신에게 렌더링되는 것을 통해 기본 제어를 제공 할 것입니다. 너무 많은 경로가 없거나 너무 많거나 너무 구체적인 정보를 제공 할 필요가없는 경우이 작업이 정상적으로 수행됩니다.

Html.RouteLink() 메서드는 약간 다른 인수를 사용하므로 처리되는 방식을 조금 더 자세하게 제어 할 수 있습니다. 내 시나리오가 좀 더 복잡하거나 좀 더 자세한 경로 구조가있는 경우이 방법을 사용하는 경향이 있습니다.
예를 들어 최근 프로젝트에서 (유연성을 위해) 많은 정보를 얻을 수있는 하나의 복잡한 경로보다는 여러 가지 다른 경로가 있었지만 모두 매우 간단했습니다. 따라서 동일한 컨트롤러에 대해 4 ~ 5 개의 라우트가 지정되었으며 모두 기본 동작이 지정되었습니다. 나는 주로 경로 이름을 지정할 때 기본 매개 변수가 자동으로 입력 되었기 때문에 RouteLink 버전을 사용했습니다.

여러분이 생각한대로, 그리고 프로젝트에서 의미가있는대로 사용하십시오. 실제로 그들 중 어느쪽에도 위쪽/아래쪽이 없습니다 (그것은 다른 것과 일치하지 않습니다 ...).

19

여기에 주어진 다른 답변 외에도 RouteLink는 조금 더 빠르며 라우팅 테이블을 변경했기 때문에 잘못된 경로와 일치 할 수 없습니다.

+1

Simone Chiaretta는 다음과 같은 성능 분석을 수행했습니다. http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry

관련 문제