2011-02-09 6 views
0

우리는 사용자가 지정된 짧은 코드를 사용하여 특정 기사/페이지를 고유하게 호출 할 수있게 해주는 ASP.NET MVC 웹 응용 프로그램에서 단축 코드를 구현하려고했습니다.MVC 경로를 단축 코드로 사용

예 : www.mysite.com/power는 실제 URL www.mysite.com/Power/Home/에 매핑됩니다.

나는이 단축 코드를 응용 프로그램 내의 다양한 작업과 컨트롤러에 매핑하는 다양한 경로를 사이트 전체에 만들었습니다. 짧은 코드/경로 관점에서 모든 것이 잘 작동합니다.

그러나 저는 흥미로운 사실을 발견했습니다. URL을 가리키는 페이지를 생성하기 위해 Url.Action 메서드를 사용하는 하이퍼 링크가 있습니다. 이 페이지들 중 많은 페이지에도 짧은 코드가 있습니다. 예를 들면 다음과 같은 링크가 있습니다 :

<a href="<%= Url.Action("Index", "Home", new { Area = "Power" })%>"> Go to Power page</a> 

이것은 앞서 언급 한 짧은 코드가 지정된 페이지입니다. Url.Action을 사용할 때 이상적으로 링크가/Power/Home/Index 또는/Power/Home으로 생성 될 것으로 기대하지만, 경로 제약 조건이 매핑되었으므로/power로 링크를 생성합니다.

링크를 생성 할 때 실제 링크 URL을 사용할 수있는 방법이 있습니까? 이메일 등을 보내고있을 때만 짧은 코드를 원합니다. 사이트에서 실제 URL을 생성하기를 원합니다.

이것은 가능할 수도 있지만 불가능할 수도 있지만, 내가 사용할 수있는 아이디어가 있는지 알고 싶습니다.

아누 프

답변

0

지수와 홈은 가능성이 동작 및 컨트롤러 요소에 대한 기본값으로 경로 테이블에 정의되어 있습니다. URL을 생성 할 때 필요하지 않은 경우 기본값이 포함되지 않습니다.

0

생성 된 URL 또는 동작 링크를보다 직접적으로 제어 할 수있는 고유 한 동작 과부하 또는 도우미를 작성할 수 있습니다. 두 가지 방법으로 접근 할 수 있습니다 : 1) 단축 코드 특정 URL과 링크를 생성하는 도우미 및/또는 2) 전체 URL 및/또는 링크를 생성하는 도우미. Url.Action이 라우팅 구성으로 인해 단축 코드 버전을 반환하는 경우 두 번째 옵션으로 전체 URL을 생성하는 도우미/확장 메서드를 만드는 것이 좋습니다. 여기

0

내가이 해결 방법은 다음과 같습니다 대신 액션 URL을 가리 키도록 짧은 코드 경로를 이름의

을, 그때 내가 원하는 실제 경로로 리디렉션 할 다른 컨트롤러 액션에 경로 강조했다 그것까지.

예 : 원래 경로 표에 www.mysite.com/Power/Home을 가리키는 코드 "전원"이 정의되어 있습니다.

이제 인덱스, 컨트롤러 - 홈, 영역 - 전원으로 향하게하는 대신 action : Power - Controller - Home, Area - ShortCode.

이제 컨트롤러에서 간단히 RedirectToAction ("Index", "Home", new {Area = "Power"})을 수행합니다.

이렇게하면/Power/Home에 대한 실제 링크가 단문 코드 "power"로 해결되지 않습니다.

이것은 작업을 약간 늘린 간단한 수정이지만 매력처럼 작동합니다.