Perder a navegação para trás em Asp.net
-
19-09-2019 - |
Pergunta
Eu tenho uma página da web ASP.NET2.0 com um botão Enviar. Quando o usuário clica, eu gero um arquivo XML em tempo real e retorno isso como resultado.
Aqui está o código:
protected void submitBtn_Click(object sender, EventArgs e)
{
string result = this.ProduceMyXmlResult();
this.Response.Clear();
this.Response.StatusCode = 200;
this.Response.ContentType = "application/xml";
this.Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Response.Write(result);
this.Response.End();
}
A parte do código faz exatamente o que eu quero. No entanto, o navegador não reconhece o arquivo XML como uma nova página; portanto, o botão de volta não me leva de volta à minha página original. Por que e como posso superar isso?
Solução
A maneira mais simples de fazer isso, eu acho, seria criar uma página separada que execute esse código em page_load () e redirecionasse quando o botão for pressionado.
A razão pela qual você não tem navegação para trás é porque o navegador não sabe que a página mudou. Como o botão Enviar está pré -formando um postback e você está retornando dados XML como resposta a esse postback, ele parece ao navegador como se isso fosse apenas uma transformação da página atual (como se você fosse, digamos, mudou o texto de um controle de etiqueta).
A maneira "correta" de conseguir isso seria com algum tipo de manipulador de HTTP, mas não tenho experiência para sugerir a maneira correta de fazê-lo e você já tem funcionando o código C# para esse método.