どのように私はMVCは、動的アクションリンクをレンダリングする方法を変更できますか?
-
21-08-2019 - |
質問
私は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 /ホーム/インデックス/ のの
の(123456は、クライアントIDで、必要とされている)の
そして、ここからの応答は、ログインfacebookで処理され、としてユーザーに表示されます。
の http://apps.facebook.com/MyFBApplication/Home/Index/> の
Facebookの要求から舞台裏のページデータ上に述べたように。
の http://www.myapplicationserver.com/facebook/123456/Home/インデックス/ のの
問題が
の呼び出しですHtml.ActionLink("Home", "Index", "Home")
につながるリンクをレンダリングします
の http://apps.facebook.com/facebook/123456/Home/インデックス/ のの
と私はそれがにつながる必要があります。
の http://apps.facebook.com/MyFBApplication/Home/Index/> の
私はそれが正常に動作し、拡張メソッドの新しいセットを構築買い手に入れた。
Html.FacebookActionLink("Home", "Index", "Home")
Html.FacebookBeginForm("Index", "Home")
Html.Facebook(etc)
しかし、これはそれに「臭い」を持っています。私は、プロセス内Html.ActionLink()の配管を傍受し、出力を変えることができる場所を見つけるしたいと思います。それから私は、すべての標準のコールを使用することができます。
ありがとうございます。
解決
なぜこれが「臭い」がありますか?マイクロソフトは、拡張メソッドとしてActionLinkの方法を構築しました。これらは、あなたの目的を果たしていない場合は、あなたが行っていると同じように自分自身を書くことができます。
あなたが本当に望んでいた場合、私はあなたが(限り、メソッドのシグネチャがあいまいでないとして)、過負荷としてActionLinkのメソッドの独自のバージョンを作成することができると思います。
あなたは、MSがActionLinkの拡張メソッドを実装する方法を確認LinkExtensionsクラスの下でソースコードをチェックアウトする必要がある場合。あなたはここをダウンロードすることができます。