ASP.Net: Literal vs Label


102

Tôi chỉ muốn nghe một số nhà chức trách về thời điểm và địa điểm bạn nên sử dụng LITERALquyền kiểm soát đối với a LABEL.

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

Cá nhân tôi thấy việc bổ sung các <SPAN>thẻ trong HTML của mình là rất khó chịu và không bao giờ thực sự áp dụng các kiểu thông qua ASP, và vì vậy LITERAL, dường như đây là thứ nên được sử dụng hầu hết ... nhưng tôi lo ngại rằng có những cân nhắc hoặc lợi ích khác đối với bằng cách sử dụng LABEL trên nó mà tôi không biết.

Có tốt 100% không khi thay thế bất kỳ LABELs bằng LITERALs, miễn là chúng ta không áp dụng các kiểu cho chúng? KHÔNG có cân nhắc nào khác?

Câu trả lời:


126

Đúng vậy, sự khác biệt chính là các Literalđiều khiển chỉ hiển thị văn bản, nhưng các Labelđiều khiển bao quanh nó bằng <span>các thẻ (Trừ khi bạn sử dụng thuộc AssociatedControlIDtính, trong trường hợp đó, Labelđiều khiển sẽ hiển thị một <label>thẻ).

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

Nếu bạn không áp dụng bất kỳ kiểu nào (ví dụ bằng cách sử dụng thuộc tính Label' CssClass), bạn có thể thay thế các Labelđiều khiển bằng các Literalđiều khiển.


1
Vì vậy, chỉ để chắc chắn ở đây, KHÔNG có bất kỳ 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.
Chuck Lê Butt

2
@Django: Câu trả lời của Chris Marisic thực sự quan trọng; Các Labelđiều khiển ASP.Net phải luôn được sử dụng khi bạn muốn một <label>phần tử HTML . Ngoài ra, Nhãn hiển thị văn bản ở giữa <spans>, Chữ nghĩa thì không và Chữ chữ cung cấp cho bạn quyền kiểm soát tốt hơn đối với cách văn bản được hiển thị. Không có sự kiện đặc biệt nào trên cả hai điều khiển và nội dung của chúng có thể được truy cập trong đoạn mã phía sau theo cùng một cách (thông qua thuộc Texttính).
Graham Clark

2
CHECKBOXES! NÚT PHÁT THANH! Nếu bạn sử dụng các Labelđiều khiển, bạn có thể thêm AssociatedControlIDthuộc tính với ID của hộp kiểm hoặc nút radio mà nhãn được liên kết. Bằng cách đó, bạn có thể nhấp vào nhãn và điều khiển liên quan sẽ được kích hoạt. Làm cho vùng mục tiêu có thể nhấp lớn hơn cũng sẽ làm cho giao diện người dùng dễ sử dụng hơn.
Harry Pehkonen

34

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>

Sẽ là tối ưu khi sử dụng phần tử nhãn vì nó sẽ biến nó thành labelphần tử html với forthuộc tính chính xác nhắm mục tiêu hộp văn bản của bạn, để nếu 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 ký tự trừ khi văn bản được bao bọc trong a spansẽ có lợi cho việc tạo kiểu css.


19

nhập mô tả hình ảnh ở đây

Để hiển thị văn bản đơn giản, văn bản được định dạng hoặc văn bản HTML như hiện tại, tôi sẽ bắt đầu bằng chữ trước tiên vì nó nhẹ và không phát ra các thẻ SPAN bổ sung.

Xem video này minh họa về các thẻ bổ sung đó.

Nhưng chúng ta không thể áp dụng CSS trên một chữ, chúng ta không thể thêm các thuộc tính như Label1.Attributes.Add vào một chữ. Không thể đạt được bất kỳ điều gì theo định hướng vùng chứa vì nghĩa đen không được bao quanh bởi thẻ SPAN.

Cũng rất buồn khi thấy nhiều kẻ trong ASP.NET Webform theo mặc định chọn nhãn để hiển thị văn bản mà không biết rằng nó tạo thêm các thẻ SPAN có thể làm cho HTML của bạn nặng nề nếu bạn có nhiều nhãn.


3

Sự khác biệt b / w Nhãn và Kiểm soát chữ trong asp.net

Theo hầu hết các cách, một điều khiển Literal giống như một điều khiển Nhãn. Cả hai điều khiển này đều đượ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 bao bọc văn bản trong một spankhi được kết xuất. 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 cách sử dụng thuộc styletính củaspan .

Ví dụ: HTML sau

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

Sẽ được hiển thị dưới dạng

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

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

Ví dụ: HTML sau

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

sẽ được hiển thị dưới dạng

Literal Control Text

Vì vậy, nếu bạn muốn áp dụng bất kỳ kiểu nào cho a ngoài việc sử dụng điều khiển Nhãn, nếu không, hãy sử dụng điều khiển Literal. Do đó, điều khiển Literal là một điều khiển trọng lượng nhẹ, khi so sánh với điều khiển Nhãn.

FYI: Hệ thống phân cấp kế thừa cho lớp điều khiển Literal là (Đối tượng => Điều khiển => Literal) , trong khi đối với điều khiển Nhãn, phân cấp là (Đối tượng => Điều khiển => WebControl => Nhãn)


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.