Trong ASPX (ASP.NET Web Forms), Response.ContentType là thuộc tính của đối tượng Response, được sử dụng để xác định kiểu dữ liệu mà trang web sẽ trả về cho trình duyệt hoặc client.
Bình thường theo mặc định thì aspx luôn trả về kiểu html, chẳng hạn bạn truy cập vào 1 trang nào đó để xem tin tức thì sẽ trả về bạn định dạng html để xem nội dung.
Sử dụng ngày tại Page_Load, khi người truy cập vào web sẽ gọi đến server và server xử lý ngay tại sự kiện page load, sau đó trả về lại kết quả cho client.
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "text/plain";
Response.Write( "xin chào, tôi là iif !");
Response.End();
}
Kết quả: chạy đoạn code trên và view source sẽ thấy phần html chỉ có chữ xin chào, tôi là iif !
Bạn thử suy nghĩ xem nếu chỉ để lại dòng
protected void Page_Load(object sender, EventArgs e)
{
Response.Write( "xin chào, tôi là iif !");
}
kết quả:
xin chào, tôi là iif
<html>
<head><title>Untitled Page</title></head>
<body>
</body>
</html>
Đến đây nếu tinh ý bạn sẽ nhận ra được khi nào sử dụng Response.ContentType
Giải thích:
Response.Clear() là gì ?
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "text/plain";
Response.Write( "xin chào, tôi là iif !");
Response.Clear();
Response.Write( "Học aspx cơ bản");
Response.End();
}
Chạy đoạn code này bạn sẽ thấy chỉ in đoạn Học aspx cơ bản
Nếu không thêm code Response.ContentType thì trang web tự mặc định chế độ xuất là html.
Ngoài mặc định trả về html, bạn cần trả về 1 hình ảnh / file word hay pdf / json (sử dụng nhiều cho app web)... thì bạn cần phải hiểu rõ về ResponseContentType
Ví dụ: bạn cần xuất json cho ứng dụng web, bạn làm code như sau:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write( "[{\"Name\":\"1\",\"Succ\":\"0\"}]");
}
Theo bạn nghĩ đoạn code ASPX trên đã đúng hay chưa ?
Trả lời: sai, vì khi xuất nội dung sẽ có dạng
{Name:1,Succ:0}
<html>
<head><title>Untitled Page</title></head>
<body>
</body>
</html>
Như vậy cái ta cần chỉ là 1 đoạn JSON nhưng trả về như cấu trúc trên không đúng?
Sửa lại như sau:
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "application/json";
Response.Write( "[{\"Name\":\"1\",\"Succ\":\"0\"}]");
Response.End();
}
Bây giờ khi chạy kết quả chỉ còn: [{"Name":"1","Succ":"0"}]
Kết quả OK.
Giải thích thêm code ASPX:
Response.Clear() sẽ xóa toàn bộ nội dung đã được ghi vào phản hồi cho đến lúc đó.
Response.Write() sẽ ghi nội dung mới vào phản hồi.
Response.End() sẽ kết thúc phản hồi và gửi nội dung tới trình duyệt.
Ví dụ, khi bạn muốn gửi một tệp hình ảnh (như JPEG) tới trình duyệt, bạn có thể đặt Response.ContentType là "image/jpeg". Hoặc nếu bạn muốn gửi một trang HTML, bạn sẽ đặt giá trị là "text/html".
Cú pháp:
Response.ContentType = "type";
Trong đó "type" là kiểu MIME mà bạn muốn sử dụng. Dưới đây là một số kiểu MIME phổ biến:
"text/html": Trang HTML
"text/plain": Dữ liệu văn bản thô
"application/json": Dữ liệu JSON
"application/xml": Dữ liệu XML
"image/jpeg": Hình ảnh JPEG
"image/png": Hình ảnh PNG
"application/pdf": Tệp PDF
Ví dụ cơ bản nhất về Response.ContentType:
Giả sử bạn muốn trả về một tệp PDF từ server:
Response.ContentType = "application/pdf";
Response.TransmitFile(Server.MapPath("~/files/sample.pdf"));
Response.End();
Trong ví dụ trên, Response.ContentType được đặt thành "application/pdf" để trình duyệt hiểu rằng nội dung nhận được là một tệp PDF. Sau đó, phương thức TransmitFile sẽ gửi tệp PDF tới người dùng.
Lợi ích:
Đảm bảo trình duyệt hiểu và xử lý đúng loại nội dung.
Hỗ trợ việc trả về các loại dữ liệu khác nhau ngoài HTML, như hình ảnh, tệp tin, JSON, v.v.
- Dạng text / plain
Response.Clear();
Response.ContentType = "text/plain";
Response.Write("Hello iif");
Response.End();
- Dạng text / html
Response.Clear();
Response.ContentType = "text/HTML";
Response.Write("<b>Chào iif</b>");
Response.End();
- Dạng json
Response.Clear();
Response.ContentType = "application/json";
Response.Write(ff);
Response.End();
Ví dụ:
Nếu muốn trả về kiểu json theo các cột ta dùng:
[{"Name":"1","Succ":"0"}]
string _RETURN_UPLOAD = "[{\"Name\":\"1\",\"Succ\":\"0\"}]";
- Dạng xml
Response.Clear();
Response.ContentType = "text/xml";
Response.Write(ff);
Response.End();
Tạo ra 1 file aspx có tên anh.aspx
protected void Page_Load(object sender, EventArgs e)
{
string imagePath = Server.MapPath("/themes/macdinh/images/logo.png"); // Đường dẫn ảnh trên server
Response.ContentType = "image/jpeg"; // Kiểu nội dung ảnh
Response.WriteFile(imagePath); // Ghi nội dung file ảnh ra response
Response.End(); // Kết thúc response
}
Bạn có đặt câu hỏi: tại sao ta không truy cập trực tiếp đường dẫn ảnh mà lại sử dụng cách code aspx phía trên
Lý do: một số ảnh cho không cho truy cập trực tiếp muốn qua aspx để phân quyền...
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(".....");
SqlCommand cmd = new SqlCommand("select Top 10 * from dbo.tbBanHang Where TinhTrang=1", con);
con.Open();
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adpt.Fill(dt );
Newtonsoft.Json.Converters.DataTableConverter JSONConvert = new Newtonsoft.Json.Converters.DataTableConverter();
string str= Newtonsoft.Json.JsonConvert.SerializeObject(dt);
Response.Clear();
Response.ContentType = "application/json";
Response.Write(str);
Response.End();
}
Tìm kiếm:
Code c# xuất ContentType trong Asp.net giúp tạo ra các dòng dữ liệu như text, xml, json ...