Domanda

Ho una pagina web ASP.NET2.0 con un pulsante Invia. Quando l'utente fa clic, io generare un file XML al volo e ritorno che, a seguito.

Ecco il codice:

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();
    }

Il pezzo di codice fa esattamente quello che voglio. Tuttavia, il browser non riconosce il file XML come una nuova pagina, in modo che il tasto BACK non mi prende di nuovo alla mia pagina originale. Perché e come posso superare questo?

È stato utile?

Soluzione

Il modo più semplice per farlo, credo, sarebbe quello di creare una pagina separata che esegue questo codice su Page Load (), e reindirizzare ad esso quando viene premuto il pulsante.

Il motivo non avete la navigazione a ritroso è perché il browser non è a conoscenza che la pagina è cambiata. Dal momento che il pulsante Invia è preformatura un postback, e si sta tornando dati XML come la risposta a tale postback, sembra al browser come se questo è solo un po 'di trasformazione della pagina corrente (proprio come se ci si, per esempio, ha cambiato il testo di un controllo Label).

Il modo "corretto" per raggiungere questo obiettivo sarebbe con un certo tipo di gestore HTTP, ma non ho l'esperienza per suggerire il modo corretto per farlo e hai già lavorando C # code-behind per questo metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top