2010-07-22 37 views
87

Tôi chỉ muốn nghe một số cơ quan chức năng về thời gian và địa điểm bạn nên sử dụng điều khiển LITERAL trên LABEL.ASP.Net: Literal vs Label

Như tôi đã hiểu, sự khác biệt là: A LABEL có thể được tạo kiểu thông qua các thẻ <SPAN> được thêm vào.

Cá nhân tôi thấy việc thêm các thẻ <SPAN> vào HTML của tôi sẽ rất khó chịu và không bao giờ áp dụng kiểu dáng thông qua ASP, và vì vậy, LITERAL s có vẻ là những gì nên được sử dụng hầu hết thời gian ... nhưng tôi quan tâm có các khoản khác cân nhắc hoặc lợi ích khi sử dụng LABEL trên đó mà tôi không biết.

Có 100% tiền phạt để thay thế bất kỳ LABEL s nào với LITERAL s, miễn là chúng tôi không áp dụng kiểu cho chúng? Có những cân nhắc nào khác không?

Trả lời

114

Yep, sự khác biệt chính là Literal điều khiển chỉ render ra văn bản, nhưng Label điều khiển bao quanh nó với <span> thẻ (Trừ khi bạn sử dụng AssociatedControlID sở hữu, trong trường hợp một điều khiển Label sẽ làm cho một thẻ <label>).

Vì vậy, nhãn có thể được tạo kiểu dễ dàng hơn, nhưng nếu bạn chỉ đang chèn văn bản, thì chữ là cách để đi. Điều khiển văn học cũng có thuộc tính tiện dụng Mode điều chỉnh cách hiển thị văn bản. Bạn có thể mã hóa HTML hoặc được hiển thị mà không có bất kỳ thay đổi nào hoặc xóa bất kỳ phần tử ngôn ngữ đánh dấu không được hỗ trợ nào.

Nếu bạn không áp dụng bất kỳ phong cách (ví dụ bằng cách sử dụng Label 's CssClass tài sản), nó sẽ được tốt để thay thế Label điều khiển với Literal điều khiển.

+1

Vì vậy, để chắc chắn ở đây, KHÔNG có cân nhắc nào khác? Tôi hỏi vì bạn viết "sự khác biệt chính là ...". Rõ ràng là tôi không quan tâm đến sự khác biệt chính. Cảm ơn. –

+2

@Django: Câu trả lời của Chris Marisic thực sự quan trọng; Các điều khiển ASP.Net 'Label' sẽ luôn được sử dụng khi bạn muốn một phần tử'

+0

Tuyệt vời! Điều đó giải thích tại sao nó được gọi là Nhãn, quá. Cảm ơn rất nhiều! –

32

Khi bạn có mã tương tự như

<asp:Label EnableViewState="false" ID="Label8" runat="server" 
     AssociatedControlID="txtEmail">Email Address:</asp:Label> 

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox> 

Điều tốt nhất là sử dụng một yếu tố nhãn vì nó sẽ chính xác biến nó thành một yếu tố html label với for thuộc tính đúng nhắm mục tiêu hộp văn bản của bạn, do đó nếu một người dùng nhấp vào nhãn nó sẽ tự động đặt con trỏ của họ bên trong trường văn bản.

Nếu không, hãy sử dụng chữ trừ khi có văn bản được bọc trong một span sẽ có lợi cho phong cách css.

+1

Một mẹo tuyệt vời khác mà tôi không biết. Cảm ơn! –

+2

Yep đây là lý do chính tôi tự sử dụng nhãn, cung cấp trải nghiệm người dùng đẹp hơn một chút. –

+2

Tuyệt đối. Tôi luôn tự hỏi làm thế nào để tái tạo một chút HTML này trong ASP.Net. Tôi rất vui vì cuối cùng tôi đã hiểu. –

12

enter image description here

Để hiển thị văn bản đơn giản, định dạng văn bản hoặc văn bản HTML vì nó là tôi sẽ bắt đầu với nghĩa đen đầu tiên là trọng lượng nhẹ và không phát ra ra thêm thẻ SPAN.

Xem this video trình bày về các thẻ phụ đó.

Nhưng chúng tôi không thể áp dụng CSS theo nghĩa đen, chúng tôi không thể thêm thuộc tính như Label1.Attributes.Add to a literal. Bất kỳ vật chứa định hướng nào đều không thể đạt được khi chữ không được bao quanh bởi thẻ SPAN. Nó cũng rất buồn khi thấy nhiều người dùng Webform mặc định chọn nhãn để hiển thị văn bản mà không biết rằng nó tạo ra các thẻ SPAN phụ có thể làm cho HTML của bạn nặng nếu bạn có nhiều nhãn.

1

Difference b/w Label và Literal kiểm soát trong asp.net

Trong hầu hết các cách điều khiển Literal là giống như một điều khiển Label. Cả hai điều khiển này được sử dụng để hiển thị Văn bản trên biểu mẫu web. (Thuộc tính Văn bản có thể được đặt trong HTML hoặc trong mã phía sau.)

Sự khác biệt lớn nhất là điều khiển Nhãn kết thúc văn bản trong một span khi được hiển thị. Bất kỳ kiểu nào được áp dụng cho điều khiển Nhãn, sẽ được hiển thị bằng thuộc tính style của span.

Ví dụ, HTML sau

<asp:Label ID="Label1" runat="server" Text="Label Text" 
ForeColor="Red" Font-Bold="true" ></asp:Label> 

sẽ được trả lại như

<span id="Label1" style="color:Red;font-weight:bold;">Label Text</span>

Một điều khiển Literal không ra bất kỳ thẻ xung quanh, vì vậy các văn bản được hiển thị như là :

Ví dụ: HTML sau

<asp:Literal ID="Literal1" runat="server" 
Text="Literal Control Text"></asp:Literal> 

sẽ được render thành

Literal Control Text

Vì vậy, nếu bạn muốn áp dụng bất kỳ phong cách cho một hơn sử dụng điều khiển Label nếu không sử dụng điều khiển Literal. Bởi vì điều này, kiểm soát Literal là một điều khiển trọng lượng nhẹ, khi so sánh với điều khiển Label.

FYI: Các hệ thống phân cấp thừa kế cho các lớp học kiểm soát Literal là (Object => Control => Literal), nơi như đối với điều khiển Label, hệ thống phân cấp là (Object => Control => WebControl => Label)