2009-05-14 3 views
1

MVC가 작업 링크 (및 양식 및 URL 등)를 구성 설정에 따라 렌더링하는 방식을 변경해야합니다. 찾아 것입니다 위의 링크를 클릭MVC가 동작 링크를 동적으로 렌더링하는 방식을 어떻게 변경합니까?

<a href="/MyFBApplication/Home/Index/">home</a> 

: 나는 MS MVC와 내 행동 링크가 너무 링크를 렌더링하는 데 필요한 사용하여 페이스 북의 응용 프로그램을 쓰고 있어요
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication는"의 이름입니다 페이 스북 응용 프로그램. (123456 클라이언트 ID가

http://www.myapplicationserver.com/facebook/123456/Home/Index/
입니다 : 링크를 구축하기 위해 나는 사용자가 다음 내부적으로이 링크에 요청을 할 것입니다 링크 페이스 북을 클릭하면

Html.ActionLink("Home", "Index", "Home") 

를 호출하여 시작 그리고 필요하다)

그리고 나서 여기로부터의 응답은 페이스 북에 의해 처리되고 다음과 같이 사용자에게 표시된다 :
http://apps.facebook.com/MyFBApplication/Home/Index/

위에서 언급 한 것처럼 페이스 북은 장면 뒤에서 페이지 데이터를 요청합니다.
http://www.myapplicationserver.com/facebook/123456/Home/Index/

문제는
http://apps.facebook.com/facebook/123456/Home/Index/

로 연결되는 링크를 렌더링

Html.ActionLink("Home", "Index", "Home") 

를 호출하고 난으로 이어질 필요 :
http://apps.facebook.com/MyFBApplication/Home/Index/

제대로 확장 메소드를 새로 구입하는 것이 좋습니다.

Html.FacebookActionLink("Home", "Index", "Home") 
Html.FacebookBeginForm("Index", "Home") 
Html.Facebook(etc) 

그러나 이것은 "냄새"가 있습니다. 나는 Html.ActionLink()의 ​​처리를 가로 채고 출력을 변경할 수있는 장소를 찾고 싶다. 그런 다음 모든 표준 전화를 사용할 수 있습니다.

감사합니다.

+0

확장 방법이 너무 복잡하다고 생각하는 경우 질문에 게시하여 분석 할 수 있습니다 (예 : '그게 효과가 있지만 작동하면 최상일 것'). Asp.Net MVC의 주요 판매 포인트 중 하나는 기본 프레임 워크 일뿐 아니라 제공하는 확장 성입니다. 그것은 기본적으로 몇 가지 도구가있는 샌드 박스입니다. 때로는 건물에 필요한 '성'을 얻기 위해 다른 도구를 만들어야합니다. – MunkiPhD

답변

2

왜 "냄새"가 있습니까? Microsoft는 ActionLink 메소드를 확장 메소드로 구축했습니다. 이것들이 당신의 목적에 부합하지 않는다면, 당신이 한 것처럼 당신 자신의 것을 쓸 수 있습니다.

정말로 원한다면 메소드 서명이 모호하지 않은 한 ActionLink 메소드의 버전을 오버로드로 생성 할 수 있습니다.

MS가 ActionLink 확장 메소드를 어떻게 구현했는지 알아 보려면 LinkExtensions 클래스 아래의 소스 코드를 확인하십시오. 당신은 download it here 일 수 있습니다.

+0

어쩌면 커스텀 액션 링크는 내가 더 주류를 유지하고 싶지 않은 나쁜 해결책이 아닐 수도 있습니다. –

+0

나는 그들이 작동하고있는 행동 링크를 사용했다. –

관련 문제