ASP.Net : 리터럴 대 레이블


102

.NET Framework에 대한 LITERAL컨트롤을 사용해야하는시기와 위치에 대한 일부 당국의 의견을 듣고 싶었 습니다 LABEL.

내가 이해하는대로 차이점은 다음과 같습니다 . 추가 된 태그를 LABEL통해 A 스타일을 지정할 수 있습니다 <SPAN>.

개인적으로 <SPAN>HTML 에 태그를 추가 하는 것이 매우 짜증나고 실제로 ASP를 통해 스타일을 적용하지 않는다는 LITERAL것을 알게 되었기 때문에 대부분의 시간을 사용해야하는 것 같습니다 ...하지만 다른 고려 사항이나 이점이 있습니다. 내가 알지 못하는 LABEL을 사용합니다.

스타일을 적용하지 않는 한 LABELs를 LITERALs 로 바꾸는 것이 100 % 괜찮 습니까? 다른 고려 사항이 없습니까?

답변:


126

네, 주요 차이점은 Literal컨트롤이 텍스트를 렌더링하지만 Label컨트롤이 <span>태그로 둘러싸여 있다는 것입니다 ( AssociatedControlID속성 을 사용하지 않는 한 Label컨트롤이 <label>태그 를 렌더링합니다 ).

따라서 레이블 스타일을 더 쉽게 지정할 수 있지만 텍스트를 삽입하는 경우에는 리터럴을 사용하면됩니다. 리터럴 컨트롤 Mode에는 텍스트 렌더링 방법을 제어하는 편리한 속성도 있습니다 . HTML로 인코딩하거나 변경하지 않고 렌더링하거나 "지원되지 않는 마크 업 언어 요소"를 제거 할 수 있습니다.

스타일을 적용하지 않는 경우 (예 : LabelCssClass속성 을 사용하여 ) Label컨트롤을 Literal컨트롤 로 바꾸는 것이 좋습니다.


1
그래서 여기서 확실히하기 위해 다른 고려 사항이 전혀 없습니까? "주요 차이점은 ..."이라고 쓰셨 기 때문에 묻습니다. 분명히 나는 ​​주요 차이점에 관심이 없습니다. 감사.
Chuck Le Butt

2
@Django : Chris Marisic의 대답은 정말 중요합니다. LabelHTML <label>요소 를 원할 때는 항상 ASP.Net 컨트롤을 사용해야합니다 . 그 외에도 Labels는 사이 <spans>에 텍스트를 렌더링 하고 리터럴은 렌더링 하지 않으며 리터럴은 텍스트가 렌더링되는 방식을 더 잘 제어 할 수 있습니다. 두 컨트롤에는 특별한 이벤트가 없으며 해당 내용은 Text속성을 통해 정확히 동일한 방식으로 코드 숨김에서 액세스 할 수 있습니다 .
Graham Clark

2
체크 박스! 라디오 버튼! Label컨트롤 을 사용 AssociatedControlID하는 경우 레이블이 연결된 확인란 또는 라디오 버튼의 ID로 속성을 추가 할 수 있습니다 . 이렇게하면 레이블을 클릭 할 수 있으며 관련 컨트롤이 활성화됩니다. 클릭 가능한 대상 영역을 더 크게 만들면 사용자 인터페이스를 더 쉽게 사용할 수 있습니다.
Harry Pehkonen

34

다음과 유사한 코드가있는 경우

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

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

레이블 요소를 사용하면 텍스트 상자를 대상 label으로하는 올바른 for속성이 있는 html 요소 로 올바르게 변환 되므로 사용자가 레이블을 클릭하면 자동으로 텍스트 필드 안에 커서가 설정되므로 사용하는 것이 가장 좋습니다.

그렇지 않으면 텍스트 span가 CSS 스타일링에 도움이 되지 않는 한 리터럴을 사용하십시오 .


19

여기에 이미지 설명 입력

간단한 텍스트, 서식이 지정된 텍스트 또는 HTML 텍스트를 그대로 표시하려면 먼저 경량으로 리터럴로 시작하고 추가 SPAN 태그를 내 보내지 않습니다.

이러한 추가 태그에 대해 보여주는 이 비디오 를 참조하십시오 .

그러나 우리는 리터럴에 CSS를 적용 할 수 없으며 Label1.Attributes.Add와 같은 속성을 리터럴에 추가 할 수 없습니다. 리터럴은 SPAN 태그로 둘러싸여 있지 않기 때문에 컨테이너 지향적 인 것은 얻을 수 없습니다.

또한 많은 ASP.NET Webform 사용자가 기본적으로 레이블을 선택하여 레이블이 많은 경우 HTML을 무겁게 만들 수있는 추가 SPAN 태그를 생성한다는 사실을 모르고 텍스트를 표시하는 것을 보는 것도 안타깝습니다.


3

asp.net의 차이점 흑백 레이블 및 리터럴 컨트롤

거의 모든면에서 Literal 컨트롤은 Label 컨트롤과 동일합니다. 이 두 컨트롤은 모두 웹 양식에 텍스트를 표시하는 데 사용됩니다. (Text 속성은 HTML 또는 코드 숨김에서 설정할 수 있습니다.)

가장 큰 차이점은 Label 컨트롤이 span렌더링 될 때 텍스트를 래핑한다는 것 입니다. Label 컨트롤에 적용되는 모든 스타일 stylespan.

예를 들어, 다음 HTML

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

다음과 같이 렌더링됩니다.

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

Literal 컨트롤은 주변 태그를 출력하지 않으므로 텍스트는 다음과 같이 표시됩니다.

예를 들어, 다음 HTML

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

다음과 같이 렌더링됩니다.

Literal Control Text

따라서 스타일을 a에 적용하려면 Label 컨트롤을 사용하고 그렇지 않으면 Literal 컨트롤을 사용하십시오. 이 때문에 Literal 컨트롤은 Label 컨트롤과 비교할 때 가벼운 컨트롤입니다.

참고 : Literal 컨트롤 클래스의 상속 계층은 (Object => Control => Literal)입니다 . 여기서 Label 컨트롤의 경우 계층은 (Object => Control => WebControl => Label)입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.