1

構成設定に基づいて、MVC がアクション リンク (およびフォームや URL など) をレンダリングする方法を変更する必要があります。私は MS MVC を使用して Facebook アプリケーションを作成しています。私のアクション リンクはリンクをレンダリングする必要があります。

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

上記のリンクをクリックすると、http:
//apps.facebook.com/MyFBApplication/Home/Index/が参照されます。

「MyFBApplication」は Facebook アプリケーションの名前です。呼び出して開始したリンクを作成するには

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

ユーザーがリンクをクリックすると、facebook はこのリンクにリクエストを送信します。

http://www.myapplicationserver.com/facebook/123456/Home/Index/
(123456 はクライアント ID であり、必要です)

次に、ここからの応答が facebook によって処理され、次のようにユーザーに表示されます:
http://apps.facebook.com/MyFBApplication/Home/Index/

上記のように、facebook は舞台裏でページ データを要求します。
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() の配管を傍受して出力を変更できる場所を見つけたいと思います。その後、すべての標準呼び出しを使用できます。

ありがとう!

4

1 に答える 1

2

なぜ「におい」がするのでしょうか?Microsoft は、ActionLink メソッドを拡張メソッドとして作成しました。これらがあなたの目的に合わない場合は、あなたが行ったのと同じように独自のものを書くことができます.

本当に必要な場合は、ActionLink メソッドの独自のバージョンをオーバーロードとして作成できると思います (メソッド シグネチャがあいまいでない限り)。

MS がどのように ActionLink 拡張メソッドを実装したかを確認する必要がある場合は、LinkExtensions クラスのソース コードを調べてください。ここからダウンロードできます。

于 2009-05-15T12:31:06.730 に答える