Existe alguma maneira de lidar com profunda ligação Silverlight sem '#' mostrando na url?

StackOverflow https://stackoverflow.com/questions/2003161

  •  18-09-2019
  •  | 
  •  

Pergunta

Eu quero ter duas interfaces separadas para o meu site, que é o Silverlight, e um que é html normal que as pessoas que não têm Silverlight, e para motores de busca. Eles teriam exatamente o mesmo conteúdo, o Silverlight seria apenas uma experiência mais rica.

Se alguém com Silverlight copia o URL para uma determinada página, ele terá um '#' nele (app # Página1). Se depois quiser link para a página em seu blog ou algo assim, ele terá o # nele, e um motor de busca, provavelmente, não considerá-lo como uma página separada do aplicativo # page2.

Existe alguma maneira de fazer a navegação de dentro Silverlight atualizar o URL com um '/' em vez de um '#', sem realmente o carregamento de uma página separada? Desta forma, os URLs na barra de endereços aparecer como um sites normais URLs ( 'app / Página1', 'app / page2').

Foi útil?

Solução

Existe alguma maneira de fazer a navegação de dentro Silverlight atualizar o URL com um '/' em vez de um '#', sem realmente o carregamento de uma página separada? Desta forma, os URLs na barra de endereços aparecer como um sites normais URLs ( 'app / Página1', 'app / page2').

Infelizmente, não. A razão que URLs de navegação do Silverlight usar # é que você pode mover dentro uma página, movendo para um local âncora. Se você usou um URL completa com separadores '/', que faria com que o navegador para navegar para uma nova página, que iria recarregar sua aplicação Silverlight. Isso basicamente descarregar a sua aplicação Silverlight e carregar um novo com o novo URL.

Outras dicas

A razão que eles usam o sinal # é porque este é interpretado pelo navegador como se mudar para um local na página, caso contrário, seria recarregar a página.

Quanto implicações motor de busca não tenho certeza de qualquer maneira. Talvez alguém mais experiente com SEO pode dialogar sobre isso.

No entanto, eu tenho certeza que você pode obter o comportamento que você está procurando, apenas pode levar algum trickiness em sua extremidade. Outra informação maneira passe para o tempo de execução cliente Silverlight está usando parâmetros de consulta de corda. Você pode acessar consulta params string usando a coleção System.Windows.Browser.HtmlPage.Document.QueryString, você poderia então carregar a página ou controle de usuário com o conteúdo que você deseja com base nesse parâmetro.

Quanto imitando uma estrutura de pastas usando '/' s. Eu sei que existem maneiras de fazer isso usando as configurações do servidor web personalizadas / httpModules. Eu suponho que você está usando IIS / ASP.Net, gostaria de olhar para isto de Guthrie:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

leva um pouco de hackery, mas se você está realmente definir a fazê-lo eu tenho certeza que você poderia. Você também terá de enfrentar as coisas que o cartaz acima mencionados, se você tentar fazer uso da mesma lógica durante uma sessão. Isso pode funcionar embora para apenas o aspecto profunda ligação que você está procurando.

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