Question

Je dois changer la façon dont MVC est rendu liens d'action (et la forme et les années URL, etc.) en fonction d'un paramètre de configuration. Je suis en train d'écrire une application facebook en utilisant MS MVC et mes liens d'action doivent rendre lien si:

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

cliquant sur le lien ci-dessus feuillette à:
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication" est le nom de l'application facebook. Pour construire le lien que j'ai commencé en appelant

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

Lorsqu'un utilisateur clique sur le lien facebook ensuite faire une demande à ce lien sous les couvertures:

http://www.myapplicationserver.com/facebook/123456 / Accueil / Index / (123456 est id client et est nécessaire)

Ensuite, la réponse d'ici est traité par facebook et affiché à l'utilisateur comme:
http://apps.facebook.com/MyFBApplication/Home/Index/

Comme mentionné ci-dessus demande facebook les données de page dans les coulisses de.
http://www.myapplicationserver.com/facebook/123456/Home/ Index /

Le problème est un appel à

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

rendra un lien qui mène à
http://apps.facebook.com/facebook/123456/Home/ Index /

et j'ai besoin pour mener à:
http://apps.facebook.com/MyFBApplication/Home/Index/

Je ne le faire fonctionner correctement acheter la construction d'une nouvelle série de méthodes d'extension.

<*>

Mais cela a une « odeur » à elle. Je voudrais trouver un endroit où je peux intercepter la plomberie de Html.ActionLink () en cours et changer la sortie. Ensuite, je peux utiliser tous les appels standard.

Merci!

Était-ce utile?

La solution

Pourquoi cela at-il une « odeur »? Microsoft a construit les méthodes de ActionLink comme les méthodes d'extension. Si ceux-ci ne servent pas vos besoins, vous pouvez écrire votre propre comme vous l'avez fait.

Si tu voulais vraiment, je suppose que vous pouvez créer votre propre version de la méthode ActionLink comme une surcharge (tant que les signatures de méthode ne sont pas ambiguës).

Si vous avez besoin de voir comment MS a mis en œuvre la méthode d'extension de ActionLink, consultez le code source sous la classe LinkExtensions. Vous pouvez télécharger ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top