ASP.NET 에서 Literal 과 Label 컨트롤 의 차이

7374 단어 ASP.NETLiteralLabel
1.방안 과 배경
Literal 컨트롤 은 페이지 에 내용 을 추가 하 는 몇 가지 옵션 중 하 나 를 표시 합 니 다.정적 내용 에 대해 서 는 용 기 를 사용 하지 않 아 도 HTML 로 페이지 에 직접 추가 할 수 있 습 니 다.단,내용 을 동적 으로 추가 하려 면 용기 에 내용 을 추가 해 야 합 니 다.전형 적 인 용 기 는 라벨 컨트롤,Literal 컨트롤,Panel 컨트롤,Place Holder 컨트롤 이 있 습 니 다.
Literal 컨트롤 과 Label 컨트롤 의 차 이 는 Literal 컨트롤 이 텍스트 에 HTML 요 소 를 추가 하지 않 는 다 는 것 입 니 다.(Label 컨트롤 은 span 요 소 를 보 여 줍 니 다.)따라서 Literal 컨트롤 은 위치 속성 을 포함 한 스타일 속성 을 지원 하지 않 습 니 다.단,Literal 컨트롤 은 내용 을 인 코딩 할 지 여 부 를 지정 할 수 있 습 니 다.
Panel 과 Place Holder 컨트롤 은 div 요소 로 표 시 됩 니 다.이 는 페이지 에 분 산 된 블록 을 만 들 고 Label 과 Literal 컨트롤 을 내장 하여 보 여 주 는 방식 과 다 릅 니 다.
일반적으로 추가 표 시 를 사용 하지 않 고 텍스트 와 컨트롤 이 페이지 에 직접 나타 나 기 를 원 할 때 Literal 컨트롤 을 사용 할 수 있 습 니 다.
Literal 컨트롤 에 내용 인 코딩
Literal 컨트롤 은 Mode 속성 을 지원 합 니 다.이 속성 은 추가 한 태그 에 대한 컨트롤 처리 방식 을 지정 하 는 데 사 용 됩 니 다.Mode 속성 을 다음 값 으로 설정 할 수 있 습 니 다:
・Transform.요청 브 라 우 저의 프로 토 콜 에 적응 하기 위해 컨트롤 에 추 가 된 모든 표 시 를 변환 합 니 다.HTML 이외 의 다른 프로 토 콜 을 사용 하 는 모 바 일 장치 에 내용 을 보 여 준다 면 이 설정 은 매우 유용 합 니 다.
·PassThrough.컨트롤 에 추 가 된 모든 태그 가 브 라 우 저 에 그대로 표 시 됩 니 다.
・Encode.컨트롤 에 추 가 된 모든 태그 에 HtmlEncode 방법 을 사용 하여 인 코딩 합 니 다.이 는 HTML 인 코딩 을 텍스트 표시 형식 으로 변환 합 니 다.예 를 들 어표 시 는< 로 표 시 됩 니 다.b>。브 라 우 저가 표 시 를 설명 하지 않 고 표시 하 기 를 원할 때 인 코딩 이 유용 합 니 다.인 코딩 은 보안 에 도 유용 하 며 브 라 우 저 에서 악성 표 시 를 하 는 것 을 방지 하 는 데 도움 이 된다.신뢰 할 수 없 는 원본 에서 온 문자열 을 표시 할 때 이 설정 을 사용 하 는 것 을 추천 합 니 다.
2.Literal 과 Label 은 어떤 차이 가 있 습 니까?
label 은 서버 처리 후 클 라 이언 트 웹 페이지 로 전환 할 때 html 의을 사용 하여 컨트롤 로 표시 하고 Literal 은 어떤 태그 도 가지 고 있 지 않 습 니 다.
예 를 들 어Label(label 의 클 라 이언 트 코드)
        우리(Literal 클 라 이언 트 코드)
literal 은 스타일 을 사용 할 수 없습니다.포 지 셔 닝 포석 이 비교적 번거롭다.HTML 표 시 를 추가 하지 않 고 프로 그래 밍 방식 으로 텍스트 를 설정 하려 면 페이지 에 Literal 웹 서버 컨트롤 을 추가 할 수 있 습 니 다.이 동적 텍스트 에 속 하지 않 는 요 소 를 페이지 에 동적 으로 추가 하려 면 Literal 컨트롤 이 유용 합 니 다.예 를 들 어 파일 이나 스 트림 에서 읽 은 HTML 을 Literal 컨트롤 로 표시 할 수 있 습 니 다.정적 텍스트 를 표시 하려 면 HTML 로 표시 할 수 있 습 니 다.Literal 컨트롤 필요 없어 요.텍스트 를 프로 그래 밍 으로 보 여 줘 야 할 때 만 Literal 컨트롤 을 사용 합 니 다.
3.어떻게:웹 창 에 Literal 웹 서버 컨트롤 을 추가 합 니까?
HTML 표 시 를 추가 하지 않 고 프로 그래 밍 방식 으로 텍스트 를 설정 하려 면 웹 창 에 Literal 웹 서버 컨트롤 을 추가 할 수 있 습 니 다.이 동적 텍스트 에 속 하지 않 는 요 소 를 페이지 에 동적 으로 추가 하려 면 Literal 컨트롤 이 유용 한 방식 입 니 다.예 를 들 어 파일 이나 스 트림 에서 읽 은 HTML 을 Literal 컨트롤 로 표시 할 수 있 습 니 다.
설명:정적 텍스트 를 표시 하려 면 HTML 로 표시 할 수 있 습 니 다.Literal 컨트롤 필요 없어 요.서버 코드 의 내용 을 동적 으로 변경 해 야 할 때 만 Literal 컨트롤 을 사용 합 니 다.
1.도구 상자 의'표준'옵션 에서 Literal 컨트롤 을 페이지 로 끌 어 옵 니 다.
2.또는'속성'창의'행동'유형 에서 Mode 속성 을 Transform,PassThrough 또는 Encode 로 설정 합 니 다.Mode 속성 은 이 컨트롤 이 추 가 된 모든 표 시 를 어떻게 처리 하 는 지 지정 합 니 다.다음 예제 에 서 는 간단 한 웹 페이지 를 보 여 줍 니 다.이 페이지 는 실 행 될 때 제목 뉴스 를 표시 합 니 다.이 페이지 의 주체(Literal 컨트롤 포함)는 아래 코드 와 유사 합 니 다.

<body>
  <form runat="server">
    <h1><asp:Literal id="Headline" runat=server mode="PassThrough"/></h1>
  </form>
</body>
3.실행 할 때 컨트롤 의 Text 속성 을 설정 하기 위해 페이지 에 코드 를 추가 합 니 다.
다음 예제 에 서 는 Literal 컨트롤 의 텍스트 와 인 코딩 을 프로 그래 밍 방식 으로 설정 하 는 방법 을 보 여 줍 니 다.이 페이지 는 인 코딩 텍스트 와 전달 텍스트 사이 에서 선택 할 수 있 는 단일 선택 단 추 를 포함 하고 있 습 니 다.
설명:텍스트 속성 을 신뢰 하지 않 는 원본 에서 온 텍스트 로 설정 하려 면 컨트롤 의 Mode 속성 을 Encode 로 설정 해 야 실행 가능 한 태그 가 되 지 않 습 니 다.

<%@ Page Language="C#" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Literal1.Text = "This <b>text</b> is inserted dynamically.";
        if (radioEncode.Checked == true)
        {
            Literal1.Mode = LiteralMode.Encode;
        }
        if(radioPassthrough.Checked == true)
        {
            Literal1.Mode = LiteralMode.PassThrough;
        }
    }
</script>
 
<html>
<head runat="server"></head>
<body>
    <form id="form1" runat="server">
    <div>
        <br />
        <asp:RadioButton
            ID="radioEncode"
            runat="server"
            GroupName="LiteralMode"
            Checked="True"
            Text="Encode"
            AutoPostBack="True" />
        <br />
        <asp:RadioButton
            ID="radioPassthrough"
            runat="server"
            GroupName="LiteralMode"
            Text="PassThrough"
            AutoPostBack="True" />
        <br />
        <br />
        <asp:Literal ID="Literal1" runat="server"></asp:Literal>&nbsp;</div>
    </form>
</body>
</html>
4.Literal 류
웹 페이지 에 정적 텍스트 를 표시 하 는 위 치 를 유지 합 니 다.
System.Web.UI.WebControls.Literal 컨트롤 을 사용 하여 웹 페이지 에 텍스트 를 표시 할 위 치 를 유지 합 니 다.Literal 컨트롤 은 Label 컨트롤 과 유사 하지만 Literal 컨트롤 은 표 시 된 텍스트 에 스타일 을 적용 할 수 없습니다.텍스트 속성 을 설정 하여 컨트롤 에 표 시 된 텍스트 를 프로 그래 밍 방식 으로 제어 할 수 있 습 니 다.
경고:이 컨트롤 은 사용자 의 입력 을 표시 할 수 있 으 며,이 입력 은 악의 적 인 클 라 이언 트 스 크 립 트 를 포함 할 수 있 습 니 다.응용 프로그램 에서 클 라 이언 트 에서 보 낸 모든 정 보 를 표시 하기 전에 실행 가능 한 스 크 립 트,SQL 구문 또는 다른 코드 가 포함 되 어 있 는 지 확인 하 십시오.ASP.NET 은 사용자 가 입력 한 스 크 립 트 와 HTML 을 막 기 위해 입력 요청 인증 기능 을 제공 합 니 다.사용자 의 입력 을 판단 하기 위해 인증 서버 컨트롤 도 제공한다.
다음 예제 에 서 는 Literal 컨트롤 을 사용 하여 정적 텍스트 를 표시 하 는 방법 을 설명 합 니 다.
설명:다음 예제 에 서 는 단일 파일 코드 모델 을 사용 합 니 다.코드 숨 김 파일 에 직접 복사 하면 정상적으로 작 동 하지 못 할 수도 있 습 니 다.이 코드 예 시 는.aspx 확장자 가 있 는 빈 텍스트 파일 로 복사 되 어야 합 니 다.

<%@ Page Language="C#" AutoEventWireup="True" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html>
<head>
    <title>Literal Example</title>
<script runat="server">
      void ButtonClick(Object sender, EventArgs e)
      {
         Literal1.Text="Welcome to ASP.NET!!";
      }
   </script>
</head>
<body>
   <form id="form1" runat="server">
      <h3>Literal Example</h3>
      <asp:Literal id="Literal1"
           Text="Hello World!!"
           runat="server"/>
      <br /><br />
      <asp:Button id="Button1"
           Text="Change Literal Text"
           OnClick="ButtonClick"
           runat="server"/>
   </form>
</body>
</html>

좋은 웹페이지 즐겨찾기