2009-12-04 38 views
28

Việc sử dụng hai điều khiển này là gì? Theo thời gian, tôi xây dựng HTML trong mã phía sau. Đôi khi tôi muốn sản xuất không gian trắng và tôi sẽ làm một cái gì đó như thế này.Khi nào sử dụng Literal vs LiteralControl?

const string twoSpaces = "  "; 
p.Controls.Add(new Literal { Text = twoSpaces }); 

hoặc

const string twoSpaces = "  "; 
p.Controls.Add(new LiteralControl { Text = twoSpaces }); 

Câu hỏi của tôi là, đây là một sử dụng hợp lý các điều khiển? Tôi có nên thêm khoảng trống theo cách này không? Khi nào tôi sử dụng cái kia?

Tôi nhận ra mình có thể làm điều gì đó với CSS, nhưng tôi thực sự muốn biết mục đích của hai điều khiển này là gì và có bất kỳ điều gì sai trái khi sử dụng chúng trong thời trang này.

Trả lời

34

Sử dụng theo nghĩa đen ViewState và sẽ nhớ mọi cập nhật đối với thuộc tính của nó trên Postback. LiteralControl phải có thuộc tính của nó được đặt trên mỗi postback.

Ngoài ra, phải rất cẩn thận khi sử dụng Literal. Nếu bạn cho phép đầu vào của người dùng được hiển thị trong thẻ Literal, bạn rất có thể đã mở ra một cuộc tấn công XSS.

+3

+1. Một số bảo vệ có sẵn từ HttpUtility.HtmlEncode() hoặc thư viện Anti-XSS an toàn hơn nhưng hơi chậm của Microsoft - nhưng như Chris đã nói rất cẩn thận về đầu vào của người dùng có thể được hiển thị trong Literal/LiteralControl. – Broam

9

Chris Pitman đã trả lời đúng, nhưng tôi chỉ muốn thêm một số sự kiện khác về cả hai.

Literal là điều khiển có thể được thêm vào cả trang aspx cũng như mã phía sau.

asp:Literal Text="text" runat="server"

Nhưng LiteralControl không thể được thêm vào trang aspx, nhưng chỉ để mã phía sau. Vì vậy, đó là lý do tại sao LiteralControl không có ViewState được liên kết với lớp trang.

Các vấn đề liên quan