Frage

Ich brauche die Art und Weise ändern MVC Aktion Links rendert (und Formular und URLs, etc.), basierend auf einer Konfigurationseinstellung. Ich schreibe eine Facebook-Anwendung mit MS MVC und meine Aktion Links brauchen Link zu machen, so:

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

den Link oben klicken würde wechseln Sie zu:
http://apps.facebook.com/MyFBApplication/Home/Index/

„MyFBApplication“ ist der Name der Facebook-Anwendung. So erstellen Sie den Link Ich begann durch den Aufruf

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

Wenn ein Benutzer auf den Link klicken, wird Facebook eine Anfrage an diesen Link unter der Decke machen:

http://www.myapplicationserver.com/facebook/123456 / Home / Index /
(123456 Client-ID und ist erforderlich)

Dann Antwort von hier wird von Facebook verarbeitet und angezeigt, um den Benutzer als:
http://apps.facebook.com/MyFBApplication/Home/Index/

Wie oben Facebook Anfrage erwähnt die Seitendaten hinter den Kulissen aus.
http://www.myapplicationserver.com/facebook/123456/Home/ Index /

Das Problem ist ein Aufruf an

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

einen Link machen, die
führt http://apps.facebook.com/facebook/123456/Home/ Index /

und ich brauche es zu führen:
http://apps.facebook.com/MyFBApplication/Home/Index/

Ich habe es richtig bekommen arbeiten kauft einen neuen Satz von Erweiterungsmethoden zu bauen.

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

Das hat aber einen „Geruch“ zu. Ich möchte einen Platz finden, wo ich die Sanitär von Html.ActionLink () in Prozess abfangen und die Ausgabe ändern. Dann kann ich alle Standard-Anrufe verwenden.

Danke!

War es hilfreich?

Lösung

Warum hat dies einen „Geruch“? Microsoft gebaut, um die Action Methoden als Erweiterungsmethoden. Wenn dies nicht Ihre Zwecke dienen, können Sie Ihre eigenen schreiben Sie einfach, wie Sie getan haben.

Wenn Sie wirklich wollte, ich denke, Sie Ihre eigene Version des Action Methode als Überlastung führen könnte (solange die Methodensignaturen nicht eindeutig sind).

Wenn Sie sehen möchten, wie MS die Actionlink-Extension-Methode implementiert Besuche den Quellcode unter der LinkExtensions Klasse. Sie können hier herunterladen .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top