문제

MVC가 구성 설정에 따라 작업 링크(양식 및 URL 등)를 렌더링하는 방식을 변경해야 합니다.MS MVC를 사용하여 Facebook 애플리케이션을 작성 중이며 내 작업 링크는 다음과 같이 링크를 렌더링해야 합니다.

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

위 링크를 클릭하면 다음을 탐색할 수 있습니다.
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication"은 페이스북 애플리케이션의 이름입니다.링크를 구축하려면 전화를 걸어 시작했습니다.

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

사용자가 링크를 클릭하면 Facebook은 내부적으로 이 링크에 대한 요청을 보냅니다.

http://www.myapplicationserver.com/facebook/123456/Home/Index/
(123456은 클라이언트 ID이며 필요합니다)

그런 다음 여기의 응답은 Facebook에서 처리되어 사용자에게 다음과 같이 표시됩니다.
http://apps.facebook.com/MyFBApplication/Home/Index/

위에서 언급한 것처럼 페이스북은 비하인드 스토리의 페이지 데이터를 요청합니다.
http://www.myapplicationserver.com/facebook/123456/Home/Index/

문제는 전화입니다.

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

다음으로 연결되는 링크를 렌더링합니다.
http://apps.facebook.com/facebook/123456/Home/Index/

그리고 나는 다음과 같은 결과를 얻기 위해 그것이 필요합니다:
http://apps.facebook.com/MyFBApplication/Home/Index/

나는 새로운 확장 방법 세트를 구축하여 제대로 작동하도록 했습니다.

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

그러나 이것은 "냄새"를 가지고 있습니다.처리 중인 Html.ActionLink()의 배관을 가로채서 출력을 변경할 수 있는 장소를 찾고 싶습니다.그러면 모든 표준 통화를 사용할 수 있습니다.

감사해요!

도움이 되었습니까?

해결책

왜 "냄새"가 나는 걸까요?Microsoft는 ActionLink 메서드를 확장 메서드로 구축했습니다.이것이 당신의 목적에 부합하지 않는다면, 당신이 했던 것처럼 당신 자신의 것을 작성할 수 있습니다.

정말로 원한다면 (메서드 서명이 모호하지 않은 한) 자신만의 ActionLink 메서드 버전을 오버로드로 만들 수 있을 것 같습니다.

MS가 ActionLink 확장 메서드를 어떻게 구현했는지 확인하려면 LinkExtensions 클래스 아래의 소스 코드를 확인하세요.당신은 할 수 있습니다 여기에서 다운로드하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top