2009-11-25 38 views

Respuesta

22

See this:

La diferencia entre Response.Write() y Response.Output.Write() en ASP.NET. La respuesta corta es que este último le da String.Format-style de salida y el primero no. La respuesta larga sigue.

En ASP.NET Response el objeto es de tipo HttpResponse y cuando se dice Response.Write que realmente están diciendo (básicamente) HttpContext.Current.Response.Write y llamando a uno de los muchos métodos sobrecargados Write de HttpResponse.

Response.Write luego llama .Write() en él es interna TextWriter objeto:

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

HttpResponse tiene también una propiedad llamada Output que es de tipo, sí, TextWriter, por lo que:

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

que significa que puede haga el Response lo que sea que TextWriter le permita. Ahora, TextWriters apoyan un método Write() aka String.Format, por lo que se puede hacer esto:

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

Pero internamente, por supuesto, esto está sucediendo:

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

Gracias Sr. Ngu Soo Hui –

+2

Tropezado en esto de Google - el contenido original del enlace (reproducido en esta respuesta) proviene de una publicación de '04 en el blog de Hanselman - http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx – brichins

1

Nada, también (Response.Write es simplemente una manera más corta de expresar el acto de escribir en la salida de respuesta).

Si tienes curiosidad, la implementación de HttpResponse.Write se parece a esto:

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

y la implementación de HttpResponse.Output es la siguiente:

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

Así como se puede ver, Response.Write y Response.Output.Write son verdaderamente expresiones sinónimas.

+0

gracias u Sr. Andrew liebre, por ejemplo, ¿qué pasa con –

+0

respuestas anteriores? dicen que response.write() y response.output.write() son diferentes –

1

Response.write() no dan salida formateada. Este último le permite escribir salida formateada.

Response.write - escribe la secuencia de texto Response.output.write - se escribe la salida HTTP Stream.

+0

hola Tzury Bar Yochay, ¿cuál es la salida formateada? ¿me pueden explicar gracias por la respuesta –

6

Response.write() se utiliza para mostrar el texto normal y Response.output.write() se usa para mostrar el texto formateado.

7

Aquí Response.Write(): para mostrar solo una cadena y no se pueden mostrar otros valores de tipo de datos como int, date, etc. No se permite la conversión (de un tipo de datos a otro). mientras Response .Output .Write(): puede mostrar cualquier tipo de datos como int, date, string etc., dando valores de índice.

Aquí es ejemplo:

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 
    } 
Cuestiones relacionadas