Domanda

Ho bisogno di cambiare il modo in cui MVC sta rendendo i collegamenti di azione (e la forma di e url, ecc) sulla base di un'impostazione di configurazione. Sto scrivendo un'applicazione Facebook utilizzando MS MVC e miei link azione devono rendere link in modo:

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

cliccando sul link qui sopra potrebbe individuare:
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication" è il nome dell'applicazione facebook. Per costruire il link che ho iniziato chiamando

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

Quando un utente clicca Facebook link viene poi fare una richiesta a questo link sotto le coperte:

http://www.myapplicationserver.com/facebook/123456 / Home / Indice /
(123456 è cliente id e è necessario)

Poi la risposta da qui viene elaborata da facebook e visualizzato all'utente come:
http://apps.facebook.com/MyFBApplication/Home/Index/

Come accennato in precedenza richiesta facebook i dati della pagina dietro le quinte da.
http://www.myapplicationserver.com/facebook/123456/Home/ Indice /

Il problema è una chiamata a

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

renderà un link che porta a
http://apps.facebook.com/facebook/123456/Home/ Indice /

ed ho bisogno di portare a:
http://apps.facebook.com/MyFBApplication/Home/Index/

ho capito funziona correttamente acquistare la costruzione di una nuova serie di metodi di estensione.

<*>

Ma questo ha un "odore" ad esso. Vorrei trovare un posto dove posso intercettare l'impianto idraulico di Html.ActionLink () in corso e cambiare l'uscita. Allora posso utilizzare tutte le chiamate standard.

Grazie!

È stato utile?

Soluzione

Perché questo ha un "odore"? Microsoft ha costruito i metodi ActionLink come metodi di estensione. Se questi non servono i tuoi scopi, è possibile scrivere il proprio proprio come avete fatto.

Se si voleva davvero, penso che si potrebbe creare la propria versione del metodo ActionLink come un sovraccarico (a patto che le firme dei metodi non sono ambigue).

Se avete bisogno di vedere come MS implementato il metodo di estensione ActionLink, controllare il codice sorgente sotto la classe LinkExtensions. È possibile scaricarlo qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top