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?

Foi útil?

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.

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