2009-11-25 20 views

Trả lời

22

See this:

Sự khác biệt giữa Response.Write()Response.Output.Write() trong ASP.NET. Câu trả lời ngắn gọn là sau này cung cấp cho bạn đầu ra String.Format-style và trước đây không. Câu trả lời dài sau.

Trong ASP.NET đối tượng Response là loại HttpResponse và khi bạn nói Response.Write bạn đang thực sự nói (cơ bản) HttpContext.Current.Response.Write và gọi một trong nhiều quá tải Write phương pháp HttpResponse.

Response.Write sau đó gọi .Write() vào đó là nội TextWriter đối tượng:

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

HttpResponse cũng có một tài sản gọi là Output đó là kiểu, vâng, TextWriter, vì vậy:

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

Có nghĩa là bạn có thể làm Response bất cứ điều gì một TextWriter sẽ cho phép bạn. Bây giờ, TextWriters hỗ trợ một phương pháp Write() aka String.Format, vì vậy bạn có thể làm điều này:

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

Nhưng trong nội bộ, tất nhiên, điều này đang xảy ra:

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

Cảm ơn bạn Mr. Ngu Soo Hui –

+2

Tình cờ gặp phải điều này từ Google - nội dung gốc của liên kết (được sao chép trong câu trả lời này) là từ bài đăng '04 trên blog của Hanselman - http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx – brichins

1

Không có gì, chúng đồng nghĩa (Response.Write chỉ đơn giản là cách ngắn hơn để thể hiện hành vi ghi vào đầu ra phản hồi).

Nếu bạn tò mò, việc thực hiện HttpResponse.Write trông như thế này:

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

Và việc thực hiện HttpResponse.Output là thế này:

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

Như bạn có thể thấy, Response.WriteResponse.Output.Write thật sự biểu thức đồng nghĩa.

+0

Thank u Ông Andrew thỏ ví dụ –

+0

gì về câu trả lời ở trên? họ nói response.write() và response.output.write() khác nhau –

1

Response.write() không cung cấp đầu ra được định dạng. Cái thứ hai cho phép bạn viết đầu ra được định dạng.

Response.write - ghi dòng văn bản Response.output.write - nó ghi luồng đầu ra HTTP.

+0

hi Tzury Bar Yochay đầu ra được định dạng là gì u có thể giải thích cho tôi cảm ơn u để phản hồi –

6

Response.write() được sử dụng để hiển thị các văn bản bình thường và Response.output.write() được sử dụng để hiển thị văn bản được định dạng.

7

Ở đây Response.Write(): để hiển thị chỉ chuỗi và bạn không thể hiển thị bất kỳ giá trị kiểu dữ liệu nào khác như int, date, etc.Conversion (từ kiểu dữ liệu này sang kiểu dữ liệu khác) không được phép. trong khi Response .Output .Write(): bạn có thể hiển thị bất kỳ loại dữ liệu nào như int, date, string, vv, bằng cách đưa ra các giá trị chỉ mục.

Dưới đây là ví dụ:

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 
    } 
Các vấn đề liên quan