Response.Redirect com # âncora, não funciona no IE7
-
03-07-2019 - |
Pergunta
Response.Redirect(string.Format("myprofile.aspx?uid={0}&result=saved#main",user.UserID));
referido código traduz
IE7 - myprofile.aspx?uid=933fdf8e-1be0-4bc2-a269-ac0b01ba4755&result=saved
FF - myprofile.aspx?uid=933fdf8e-1be0-4bc2-a269-ac0b01ba4755&result=saved#main
Por que IE7 largar a minha âncora?
edit: Eu devo mencionar que estou usando isso em conjunto com controle guia do jQuery UI. Eu quero a postagem para a guia em uma guia específica.
Solução
Seria muito o hack, mas se o IE não está se comportando, você poderia fazer isso.
passar um param assim, por exemplo.
uid=933fdf8e-1be0-4bc2-a269-ac0b01ba4755&result=saved&hash=main#main
Em seguida, na sua página (antes da tag do corpo perto, ou como um evento de carregamento), apenas para o IE, extrair o parâmetro se presente e definir o hash manualmente.
<!--[if IE]>
<script>
if(document.location.href.indexOf('&hash=') != -1){
//extract value from url...
document.location.hash = extractedValue;
}
</script>
<![endif]-->
Outras dicas
Talvez seja uma questão de regressão do IE6?
Você tentou trabalhar em torno dele precedendo-a com um &?
Eu costumava RegisterClientScriptBlock
a questão window.location
.
Algo parecido com isto:
string url = String.Format("{0}RegForm.aspx?regId={1}#A", this.CurrentFolderUrl, this.RegId);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "redirectToClientPage", String.Format("window.location='{0}'", url), true);