Pregunta

Es necesario cambiar la forma MVC es la prestación de enlaces de acción (y la forma de URL de e, etc.) en función de un parámetro de configuración. Estoy escribiendo una aplicación de Facebook usando MS MVC y mis enlaces de acción deben rendir acoplamiento así:

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

pulsando el enlace anterior sería vaya a:
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication" es el nombre de la función de Facebook. Para construir el enlace empecé llamando

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

Cuando un usuario haga clic en el enlace de facebook luego hacer una petición a este enlace bajo las sábanas:

http://www.myapplicationserver.com/facebook/123456 / Inicio / Índice /
(123456 es Identificación del cliente y se necesita)

A continuación, la respuesta de aquí es procesada por facebook y se muestra al usuario como:
http://apps.facebook.com/MyFBApplication/Home/Index/

Como se mencionó anteriormente petición facebook los datos de la página detrás de las escenas de.
http://www.myapplicationserver.com/facebook/123456/Home/ Índice /

El problema es una llamada a

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

rendirá un enlace que conduce a
http://apps.facebook.com/facebook/123456/Home/ Índice /

y lo necesito para llevar a:
http://apps.facebook.com/MyFBApplication/Home/Index/

Yo entiendo que funcione correctamente comprar la construcción de un nuevo conjunto de métodos de extensión.

<*>

Pero esto tiene un "olor" a ella. Me gustaría encontrar un lugar donde pueda interceptar la tubería de Html.ActionLink () en el proceso y cambiar la salida. Entonces puedo utilizar todas las llamadas estándar.

Gracias!

¿Fue útil?

Solución

¿Por qué tiene esto que un "olor"? Microsoft construyó los métodos ActionLink como los métodos de extensión. Si no se sirven a sus propósitos, usted puede escribir su propia igual que lo han hecho.

Si realmente quería, supongo que se podría crear su propia versión del método ActionLink como una sobrecarga (siempre y cuando las firmas de los métodos no son ambiguas).

Si necesita ver cómo MS implementa el método de extensión ActionLink, revisar el código fuente bajo la clase LinkExtensions. Puede descargarlo aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top