2009-11-25 43 views

risposta

22

See this:

La differenza tra Response.Write() e Response.Output.Write() in ASP.NET. La risposta breve è che quest'ultimo fornisce l'output String.Format-style e il primo no. Segue la lunga risposta.

In ASP.NET l'oggetto Response è di tipo HttpResponse e quando dici Response.Write si stanno realmente dicendo (in fondo) HttpContext.Current.Response.Write e chiamando uno dei tanti sovraccaricate Write metodi di HttpResponse.

Response.Write poi chiama .Write() su di essa la interno TextWriter oggetto:

public void Write(object obj){ this._writer.Write(obj);} 

HttpResponse ha anche una proprietà chiamata Output che è di tipo, sì, TextWriter, quindi:

public TextWriter get_Output(){ return this._writer; } 

che significa che puoi fare il Response qualunque cosa lo permetta a TextWriter. Ora, TextWriters supportano un metodo Write() aka String.Format, in modo da poter fare questo:

Response.Output.Write("Scott is {0} at {1:d}", "cool",DateTime.Now); 

ma internamente, naturalmente, questo sta accadendo:

public virtual void Write(string format, params object[] arg) 
{ 
this.Write(string.Format(format, arg)); 
} 
+1

Grazie Mr. Ngu Soo Hui –

+2

Inciampato su questo da Google - il contenuto originale del link (riprodotto in questa risposta) proviene da un post "04 sul blog di Hanselman - http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx – brichins

1

Nulla, sono anche (Response.Write è semplicemente un modo più breve per esprimere l'atto di scrivere sull'output della risposta).

Se siete curiosi, l'attuazione di HttpResponse.Write assomiglia a questo:

public void Write(string s) 
{ 
    this._writer.Write(s); 
} 

e l'implementazione di HttpResponse.Output è questo:

public TextWriter Output 
{ 
    get 
    { 
     return this._writer; 
    } 
} 

Quindi, come si può vedere, Response.Write e Response.Output.Write sono veramente espressioni sinonimi

+0

Thank u Mr. Andrew lepre per esempio –

+0

per quanto riguarda le risposte di cui sopra? dicono response.write() e response.output.write() sono diversi –

1

Response.write() non fornisce output formattato. Quest'ultimo consente di scrivere l'output formattato.

Response.write - scrive il flusso di testo Response.output.write - scrive il flusso di output HTTP.

+0

hi Tzury Bar Yochay qual è l'output formattato puoi spiegarmi grazie per la risposta –

6

Response.write() è usato per visualizzare il testo normale e Response.output.write() è usato per visualizzare il testo formattato.

7

Qui Response.Write(): per visualizzare solo la stringa e non è possibile visualizzare altri valori di tipo di dati come int, data, ecc. La conversione (da un tipo di dati a un altro) non è consentita. mentre Response .Output .Write(): è possibile visualizzare qualsiasi tipo di dati come int, data, stringa ecc. Dando valori di indice.

Ecco esempio:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Response.Write ("hi good morning!"+"is it right?");//only strings are allowed   
     Response.Write("Scott is {0} at {1:d}", "cool", DateTime.Now);//this will give error(conversion is not allowed) 
     Response.Output.Write("\nhi goood morning!");//works fine 
     Response.Output.Write("Jai is {0} on {1:d}", "cool", DateTime.Now);//here the current date will be converted into string and displayed 
    } 
Problemi correlati