Pergunta

Eu preciso mudar a maneira MVC está prestando links de ação (e forma de e URL, etc) com base em uma definição de configuração. Estou escrevendo um aplicativo facebook usando MVC MS e meus links de acção devem tornar link para que:

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

clicando no link acima se procure:
http://apps.facebook.com/MyFBApplication/Home/Index/

"MyFBApplication" é o nome do aplicativo facebook. Para construir o link eu comecei chamando

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

Quando um usuário clica no link facebook, então, fazer um pedido para este link sob as cobertas:

http://www.myapplicationserver.com/facebook/123456 / Home / Index /
(123456 é ID de cliente e é necessária)

resposta Então a partir daqui é processado pelo Facebook e exibido para o usuário como:
http://apps.facebook.com/MyFBApplication/Home/Index/

Como mencionado acima pedido facebook os dados da página nos bastidores de.
http://www.myapplicationserver.com/facebook/123456/Home/ índice /

O problema é uma chamada para

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

tornará um link que leva a
http://apps.facebook.com/facebook/123456/Home/ índice /

e eu preciso dele para levar a:
http://apps.facebook.com/MyFBApplication/Home/Index/

Eu entendi funcionar corretamente comprar a construção de um novo conjunto de métodos de extensão.

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

Mas isso tem um "cheiro" a ele. Gostaria de encontrar um lugar onde se pode interceptar o encanamento de Html.ActionLink () no processo e alterar a saída. Então eu posso usar todas as chamadas padrão.

Obrigado!

Foi útil?

Solução

Por que é que isto tem um "cheiro"? Microsoft construiu os métodos actionlink como métodos de extensão. Se estes não servir os seus propósitos, você pode escrever seu próprio assim como você tem feito.

Se você realmente queria, eu acho que você poderia criar sua própria versão do método ActionLink como uma sobrecarga (desde que as assinaturas de método não são ambíguos).

Se você precisa ver como MS implementou o método de extensão ActionLink, veja o código-fonte sob a classe LinkExtensions. Você pode baixá-lo aqui .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top