본문 바로가기

기술자료/.NET

서버컨트롤의 Label의 <LABEL> 과 <SPAN> 변신 조건

ASP.NET의 서버 웹컨트롤로 만들면 CS 프로그램 짜듯이 쉽게 UI를 구성할 수 있다.
마치 일반 Windows Form 프로그램 짜듯이 붙이게 되는데,
이 컨트롤을 실제 웹 브라우저에서 볼 수 있도록 HTML로 번역하게 된다.

TextBox 같은 경우 <Input type="text" .. >로,
Button 같은 경우 <Input type="button" ...> 로  번역되어 나타낸다.

그런데, 이 중 요상한 것이 있는데, 바로 Label 컨트롤이다.
이 Label 컨트롤을 다른 컨트롤 처럼 만들어서 붙이면 이상하게 <span> 으로 붙는다.
그런데 다른 부분의 Html 소스를 보면 <Label ..> 로 구성되어 있다.
그래서 간혹 CSS를 구성하다 보면 유독 그 녀석만 CSS가 안먹는 기이한 현상을
만들어 낸다. 게다가 HTML 코드 자체가 틀리니 미묘하게 짜증까지...

하지만 그 속에서 쓰고 있는 웹 컨트롤은 모두 똑같이 Label 이였다.
그럼 이와 같은 차이가 발생하는 이유는 무엇일까?

그것은 Label의 역할에 따라 다르게 번역되는 것이다.
사용자 삽입 이미지
위의 구성 내용 중 RSS Feed 주소 부분이 바로 이 Label로 만들어진 부분인데,
그냥 Label을 생성해서 붙이기만 하면 저 부분은 Span으로 구성되게 된다.
      <span .... > RSS Feed 주소 </span>

만일 html에서 Label로 표시하고 싶으면, Label의 속성 중에 AssociatedControlID 라는 부분에 이 Label이 수식하고 있는 컨트롤 ID를 넣으면 된다.
즉 만일 저 위의 그림의 예제에서 TextBox ID가 txtRSSFeeder 이면,
  label.AssociatedControlID  = "txtRSSFeeder";
이렇게 서버에서 구성해주면 된다.

그러면 실제 웹에서 보여주는 소스를 보게 되면,
     <Label for="txtRSSFeederxxxxxxxx" > RSS Feed 주소 </Label>
     (txtRSSFeederxxxxxx에서 xxxxxx 부분은 볼때 마다 틀린 값이 붙는다.)