블로그 이미지
Welcome to Tim's blog 딤스

카테고리

분류 전체보기 (13)
JAVA (4)
ASP.NET (8)
SECURITY (1)
ETC (0)
Total
Today
Yesterday

'ASP.NET'에 해당되는 글 8건

  1. 2018.12.05 6. 보안 인증
  2. 2018.12.05 4. 디버깅
  3. 2018.12.05 3-2 마스터 페이지
  4. 2018.12.05 3-1. 테마
  5. 2018.12.05 2-2. 표준컨트롤, 서버컨트롤
  6. 2018.12.05 2-1. 웹폼
  7. 2018.12.05 1. 닷넷 프레임워크
  8. 2018.12.05 ASP.NET Index

6. 보안 인증

ASP.NET / 2018. 12. 5. 16:36
- ASP.NET 인증 종류
 Windows : 윈도우 기본 계정을 사용. IIS 인증, 인트라넷에서 활용
 Passport : MS Passport 파트너로 등록된 사이트에서 사용자 프로필 공유. 상용서비스
 None : 사용자 직접 인증
 Forms : ASP.NET 2.0에 제공하는 ASP를 사용하여 인증처리함

- 인증선택은 Web.config 에서 기본적으로 설정해줌.
<configuration>
    <system.web>
        <authentication mode="Forms" />   
    </system.web> 
</configuration>

- <forms> 요소 특성
cookieless : 인증쿠키 사용 여부
defaultUrl :  인증후 리디렉션할 기본URL
domain : 쿠키 공유 도메인
loginUrl : 유효인증 체크 후 실패시 리디렉션할 URL
name : 인증 쿠키의 이름지정
path : 쿠키의 경로 지정
protection : 쿠키에 사용되는 암호화 유형 지정 (Validation, None, Encryption, All)
timeout : 쿠키만료 시간 (정수단위, 기본값 30분)
slidingExpiration : 상대만료 설정 여부

- 권한
ex) secured" 폴더의 권한 부여

<location path="secured">
    <system.web>
<allow roles="Admins"/>
<deny users="*"/>
    </system.web>
</location>



Ex1_Defailt.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = User.Identity.Name + " 님 환영합니다.!!!";
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SignOut();
        Response.Redirect("Ex01_Login.aspx");
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>제목 없음</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
        <asp:Button ID="Button1" runat="server" Text="로그아웃" OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>


Ex1_Login.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    protected void Button1_Click(object sender, EventArgs e)
    {
        if ((TextBox1.Text == "aaaa") && (TextBox2.Text == "aaaa"))
            FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, CheckBox1.Checked);
        else
            Label1.Text = "아이디와 비밀번호가 일치하지 않습니다.";
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>제목 없음</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <td>아이디 :</td>
                    <td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
                </tr>
                <tr>
                    <td>비밀번호 :</td>
                    <td><asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox></td>
                </tr>
                <tr>
                    <td>쿠키 유지 여부 :</td>
                    <td><asp:CheckBox ID="CheckBox1" runat="server" /></td>
                </tr>
            </table>
            <asp:Button ID="Button1" runat="server" Text="로그인" OnClick="Button1_Click" /><br />
            <asp:Label ID="Label1" runat="server" ForeColor="red"></asp:Label>
        </div>
    </form>
</body>
</html>


Web.config
      <authentication mode="Forms">
        <forms name=".ASPXAUTH" loginUrl="Ex01_Login.aspx" defaultUrl="Ex01_Default.aspx"></forms>
      </authentication>






- 로그인 컨트롤
CreateUserWizard : 사용자 정보를 입력받아 새로운 사용자를 만들어 줌
Login : 로그인 기능 제공
LoginView : 인증된 사용자와 익명 사용자에게 보여줄 화면을 구분하여 나타내줌
LoginName : 인증된 사용자의 이름 표시
LoginStatus : 로그아웃, 로그인 상태 표시
ChangePassword : 암호 수정 기능 제공
PasswordRecovery : 암호 찾기 기능 제공


- 멤버 자격 (Membership)
2.0에서 제공하는 로그인 컨트롤, 멤버 자격 API, 멤버 자격 공금자(Membership Provider)가 서로 유기적으로 동작하여 보안 프로세스(사용자 생성, 로그인, 로그아웃 등등)와 관련된 작업을 자동으로 처리해 주는 기능을 말한다.

      로그인 컨트롤
              ↓
                  멤버 자격 API
  ↓
[멤버 자격 공급자]
SqlMembership Provider                Access MembershipProvider             사용자 지정 멤버 자격 공급자
 ↓                                                ↓                                                  ↓
[데이터 소스]  
             ↓                                                ↓                                                  ↓
       SQL Server                               JET(Access)                               사용자 지정 데이터 소스


멤버 자격 공금자는 보안 프로세스와 관련된 작업을 자동으로 처리한다.
개발자는 멤버 자격 API를 사용하여 프로그래밍 방식으로 멤버 자격를 사용할 수 있고,  내부적으로 멤버 자격 API를 사용하는 로그인 컨트롤을 통해 어떠한 코드도 작성하지 않고 멤버 자격을 사용할 수 있다.

각 데이터 소스에는 그에 맞는 멤버 자격 공급자가 연결되며 ASP.NET 2.0은 기본적으로 SQLServer와 연결되 SqlMembershipProvider를 사용한다.

멤버 자격 공급자는 Machine.config 파일에서 확인 할 수 있다. (c:\window\Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.config)
파일에서 <add> 요소는 보안 프로세스와 관련된 여러 가지 특성들을 포함하고 있다.
name : 공급자의 이름을 지정
type : MembershipProvider 추상 기본 클래스를 구현하는 방식을 지정
conncetionStringName : <connectionStrings> 요소에 정의된 연결 문자열의 이름을 지정.
                       즉, 멤버 자격 공급자에 사용할 연결 문자열을 지정
enablePasswordRetrieval : 멤버 자격에서 암호 찾기를 지원하는지의 여부를 지정. True면 암호 찾기를 지원
enablePasswordReset : 멤버 자격에서 암호 수정을 지원하는의 여부를 지정.
                                   기본값은 SQL공급자의 경우 Ture, Active Directory 공급자의 경우 False
requireQuestionAndAnswer : 멤버 자격에서 암호를 다시 설정하거나 찾기 위해 보안 대답이 필요한지 여부를 지정
                                          SQL 공급자의 경우 True, Active Directory는 False
                                          True면 암호를 다시 설정하거나 찾기 위해 보안 대답이 필요
requireUniqueEmail : 사용자 생성 시 입력하는 전자메일의 유일성(Unique) 체크 여부를 지정
                               SQL 공급자의 경우 True, Active Directory는 False
                               True면 사용자 생성 시 입력하는 전자메일이 다른 사용자의 전자메일과 중복되면 안됨.
passwordFormat : 저장될 암호의 형식을 지정.
                          Clear : 암호가 암호화되지 않음
                          Encrypted : 암호가 <machineKey> 요소에 지정된 암호화 설정을 사용하여 암호화
                          Hashed(기본값) : 암호가 SHA1 해시 알고리즘을 사용하여 단방향으로 암호화
maxInvalidPasswordAttempts : 허용되는 잘못된 암호 또는 보안 대답 시도 횟수를 지정함.
                                            만약 횟수가 구성된 값과 일치하면 해당 계정은 자동으로 차단. 기본값은 5
minRequirePasswordLength : 암호의 최소 문자 수. 기본값은 1, 0~128까의 범위
minRequireNonalphanumericCharaters : 유효한 암호에 포함되어야 할 최소 특수 문자(!, @, ?, $ 등등) 수를 지정
                                                        기본값은 1, 범위는 0~128 또는 minRequirePasswordLength 값보다 큰 값 X

<configuration>
     <connectionStrings>
         <add name="불라불라" connectionString="datasource=.\   ~~~>
     </connectionStrings>

     <system.web>
         <membership>
             <providers>
                 <add ~~~>
             </providers>
         </membership>
     </system.web>
</configuration>
Machine.config 파일에 기본적으로 정의되어 있는 멤버 자격 공급자를 보면 이 공급자가 SQL Server 2005 Express (SQL Server Experss)를 사용한다.



- CreateUserWizard

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Register.aspx.cs" Inherits="Register" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:CreateUserWizard ID="CreateUserWizard1" runat="server">

            <WizardSteps>

                <asp:CreateUserWizardStep runat="server" />

                <asp:CompleteWizardStep runat="server" />

            </WizardSteps>

        </asp:CreateUserWizard>  

    </div>

    </form>

</body>

</html>

 








회원관리 서비스에 사용자를 추가하려면 마이크로소프트 SQL 서버 익스프레스 에디션(2005) 데이터 저장소에 등록한다.
회원관리 시스템을 위한 마이크로소프트 SQL 서버 데이터 공급자는 회원관리 서비스에 특화된 SQL 서버 익스트레스 버전 파일을 사용할 수 있다.
ASP.NET은 이 특정 파일이 기존에 존재하지 않을 경우 자동으로 생성한다.
ASPNETDB.MDF 파일을 생성하려면 회원관리 서비스를 활용하는 ASP.NET 서버 컨트롤로 다룬다.
ASPNETDB.MDF 파일이 애플리케이션에 필요할 때 ASP.NET 2.0은 이 파일을 App_Data 폴더 안에 생성한다.
(aspnet_Membership 테이블에 저장)



<add> 요소의 특성을 수정하면 수정된 설정내용이 컨트롤에 그대로 반영.
예를 들어, <add> 요소에서 requiresQuestionAndAnswer특성값을 False로 지정하면, CreateUserWizard 컨트롤에서 보안 질문과 보안 대답 부분은 나타나지 않는다.

<사용자 만들기> 버튼을 클릭하면 새로운 사용자가 생성.
사용자 정보를 입력하고 <사용자 만들기> 버튼을 클릭하면 App_Data 폴더 하위에  ASPNETDB.MDF 파일이 생성되는데, 사용자 정보는 바로 이곳에 저장.

ASPNETDB.MDF 파일이 생성되는 이유는 machine.config 파일에서 멤버 자격 공급자가 사용하는 연결 문자열의 특성 중 connectionString 특성의 값이 아래와 같이 정의되었기 때문이다.
<connectionStrings>
        <add name= ~~ connectionString="datasource=.\SQLEXPRESS;Integrated
                 Seurity=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf ~~>
</connectionStrings>


멤버 자격에서 로그인 컨트롤과 데이터 소스 사이에 위치해 있으면서 핵심적인 역할을 하는 멤버 자격 공급자는 기본적으로 Machine.config 파일에 정의되어 있으며, SQL Server 2005 Experss 파일 기반 데이터베이스에 연결하는 LocalSqlServer 라는 문자열을 사용한다.




- Login

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>  

        <asp:Login ID="Login1" runat="server">

        </asp:Login>   

    </div>

    </form>

</body>

</html>

  




- PasswordRecovery, ChangePassword

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserInfo.aspx.cs" Inherits="UserInfo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <asp:ChangePassword ID="ChangePassword1" runat="server">

    </asp:ChangePassword>

    <div> 

        <br />

        <asp:PasswordRecovery ID="PasswordRecovery1" runat="server">

        </asp:PasswordRecovery> 

    </div>

    </form>

</body>

</html>




이 컨트롤이 제대로 동작하기 위해서는 멤버 자격 공급자를 정의하는 <add>요소의 passwordFormat특성이 Clear 또는 Encrypted인 상태에서 사용자를 생성,
<add> 요소의 enablePasswordRetrieval 특성이 True로 지정되어 있어야한다.
만약 <add> 요소의 passwordFormat 특성이 Hashed인 상태에서 사용자를 생성하면 암호가 해시 알고리즘으로 암호화되어 암호를 다시 찾을 수 없게 되며 ChangePassword 컨트롤 또한 제기능을 하지 못함.



암호를 찾기 위해 사용자 이름을 입력하고 질문에 답했을 경우
임시 비밀 번호를 바로 보여주는 게 아니라 사용자 메일로 보내게 하기 위해서
web.config 파일에 SMTP 서버 설정하는 코드 삽입
 

<!-- 메일 서버 세팅 : windows server 2008에서만 에러안남-->

  <system.net>

    <mailSettings>

      <smtp deliveryMethod="Network" from="admin@aaa.com">

        <network defaultCredentials="true" host="localhost" />

      </smtp>

    </mailSettings>

  </system.net>



'ASP.NET' 카테고리의 다른 글

4. 디버깅  (0) 2018.12.05
3-2 마스터 페이지  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
Posted by 딤스
, |

4. 디버깅

ASP.NET / 2018. 12. 5. 16:36

- 페이지 디버깅 : 노랑색으로 오류난 위치와 내용을 알려줌
<%@ Page Language="C#" debug="true" %>


- 페이지 추적 : 오류경로와 관련정보를 추적하여 알려줌
<%@ Page Language="C#" trace="true" %>

    <%
        int a = 10;
        int b = 0;
        int c = a / b;

        Response.Write(c.ToString());
     %>

- 스크립트 디버깅을 하기 위해서는 스크립트 부분에 debugger; 라는 명령어를 추가해 준다.
IE에서도 고급 옵션에 스크립트 디버깅 사용 안 함 부분의 체크를 없애야한다.

- F5 or Ctrl + F5
- 프로세스 디버깅 (Ctrl + Alt + p) : 프로세스를 찾아 연결하여 중간에 디버깅을 실행
- 직접실행 (명령창에 immed로 호출가능 (기본적으로 보이지 않음))


- 디버깅 breakpoint에서 멈추지 않을 경우
컴파일된 임시 인터넷 파일을 지워준다. (파일이 안 지워질경우 iiereset을 해서 IIS가 잡고 있는 파일을 풀어준후 삭제)
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files




참조 http://sexybear.tistory.com/132

'ASP.NET' 카테고리의 다른 글

6. 보안 인증  (0) 2018.12.05
3-2 마스터 페이지  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
Posted by 딤스
, |

3-2 마스터 페이지

ASP.NET / 2018. 12. 5. 16:35

소개

"ASP.NET 마스터 페이지를 사용하면 응용 프로그램의 페이지에 대해 일관된 레이아웃을 만들 수 있습니다. 단일 마스터 페이지는 응용 프로그램의 모든 페이지 또는 페이지 그룹에 대해 원하는 모양과 느낌 및 표준 동작을 정의합니다. 그런 다음 표시할 콘텐츠가 포함된 개별 콘텐츠 페이지를 만들 수 있습니다. 사용자가 요청한 콘텐츠 페이지는 마스터 페이지와 병합되어 마스터 페이지의 레이아웃과 콘텐츠 페이지의 콘텐츠가 조합된 결과가 만들어집니다."

기존의 ASP.NET 1.X에서의 UI관리를 대부분 User Control 또는 Custom Control을 이용하여 사용 하셨을 것이라고 생각합니다. 하지만 ASP.NET 2.0의 새로운 기능인 마스터 페이지를 이용하면 보다 효율적이고 쉽게 사이트의 공통적인 UI를 구성할 수가 있습니다.

마스터 페이지에 대한 간단한 설명을 하자면 매 페이지마다 반복되는 요소들(사이트의 메뉴, 하단 Contact Us부분 등등)을 일일이 넣어주지 않고 하나의 주된 페이지 레이아웃으로 사이트의 전체적인 틀을 처리해 주는 ASP.NET 2.0에 새로 추가된 기술입니다.
위 ASP.NET 2.0에서 마스터 페이지가 새로 추가 됨으로 인해서 개발자들은 개발 시간을 단축시켜주고 전체적인 통일감을 쉽게 처리해 줄 수 있는 기술이라 할 수 있겠습니다.

마스터 페이지는 두 가지로 나뉘는데 마스터 페이지(*.master)와 콘텐츠 페이지(*.aspx)로 나뉘어 지게 되겠습니다.

1. 기본적인 마스터 페이지
2. 중첩 마스터 페이지


나머진 설명은 예제 첨부 파일로 대신합니다.




mek_part2.zip



  

http://blog.naver.com/letsnows?Redirect=Log&logNo=40007163766

'ASP.NET' 카테고리의 다른 글

6. 보안 인증  (0) 2018.12.05
4. 디버깅  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
Posted by 딤스
, |

3-1. 테마

ASP.NET / 2018. 12. 5. 16:34

1. 테마
a. 테마는 페이지와 컨트롤의 모양을 정의하고 웹 응용 프로그램의 페이지, 전체 웹 응용 프로그램 또는 서버의 모든 웹 응용 프로그램 간에 일관된 모양을 적용할 수 있는 속성 설정의 모음입니다.
b. 테마는 스킨, CSS 스타일시트, 이미지 및 기타 리소스와 같은 일련의 요소로 구성됩니다. 테마에는 최소한 스킨이 포함됩니다. 테마는 웹 사이트 또는 웹 서버의 특수 디렉터리에 정의됩니다.
c. 테마는 웹 사이트에서 App_Themes 폴더의 하위 폴더에 만들어집니다. 각 테마는 App_Themes 폴더의 개별 하위 폴더입니다.

2. 스킨
a. 스킨 파일은 파일 이름 확장명이 .skin이며 Button, Label, TextBox 또는 Calendar 컨트롤과 같은 개별 컨트롤의 속성 설정을 포함합니다.
b. 컨트롤 스킨 설정은 컨트롤 태그 자체와 비슷하지만 테마의 일부로 설정되는 속성만 포함합니다.
c. 테마 폴더에 .skin 파일을 만듭니다. .skin 파일에는 여러 컨트롤 형식에 대한 하나 이상의 컨트롤 스킨이 포함될 수 있습니다. 각 컨트롤에 대해 별도로 스킨 파일을 정의하거나 테마에 있는 모든 스킨을 단일 파일로 정의할 수 있습니다.
d. 스킨 파일 예

 <asp:button runat="server" BackColor="lightblue" ForeColor="black" />

e. 기본 스킨
 i. 테마를 페이지에 적용할 때 같은 형식의 모든 컨트롤에 기본 스킨이 자동으로 적용됩니다. SkinID 특성이 없는 컨트롤 스킨은 기본 스킨입니다.
f. 명명된 스킨
 i. SkinID 속성이 설정된 컨트롤 스킨입니다.
 ii. 명명된 스킨은 형식별로 컨트롤에 자동으로 적용되지 않습니다. 그 대신 컨트롤의 SkinID 속성을 설정하여 명명된 스킨을 컨트롤에 명시적으로 적용할 수 있습니다.
 iii. 명명된 스킨을 만들면 응용 프로그램에서 동일 컨트롤의 각 인스턴스에 대해 서로 다른 스킨을 설정할 수 있습니다.

 

3. 테마 설정
a. 단일 웹 응용 프로그램에 대한 테마를 정의할 수도 있고 웹 서버의 모든 응용 프로그램에서 사용할 수 있는 전역 테마를 정의할 수도 있습니다.
 i. @Page 지시문의 Theme 또는 StyleSheetTheme 특성을 사용하여 개별 페이지에 배치할 수도 있습니다.
  <%@ Page Theme="ThemeName" %>
 
 ii. 응용 프로그램 구성 파일의 <pages> 요소를 설정하여 응용 프로그램의 모든 페이지에 적용할 수도 있습니다. Machine.config 파일에서 <pages> 요소를 정의하면 서버의 웹 응용 프로그램에 있는 모든 페이지에 테마가 적용됩니다.
 
 <pages theme="ThemeName" />
 
 iii. 프로그래밍 방식 적용 (반드시 PreInit이벤트에 해야 한다)
 
 Protected void Page_PreInit(object sender, EventArgs e)
 {
  switch (Request.QueryString["theme"])
  {
   case "Blue":
    Page.Theme = "BlueTheme";
    break;
   case "Pink":
    Page.Theme = "PinkTheme";
    break;
  }
 }


4. 테마 적용의 예
a. 한 페이지에 Pink테마, Blue테마를 적용시켜서 버튼의 색깔을 바꿔 본 예제


 




 



'ASP.NET' 카테고리의 다른 글

4. 디버깅  (0) 2018.12.05
3-2 마스터 페이지  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
1. 닷넷 프레임워크  (0) 2018.12.05
Posted by 딤스
, |

서버 컨트롤 (Server Controls)

: 서버 컨트롤은 ASP.NET 내부에서 제공하는 여러 프로세스들에 대한 인터페이스(Interface, 개발자와 배부 프로세스 사이의 접점, 개발자는 이 접접을 통해 내부 프로세스를 제어함)를
 갭슐화아여 서버측에세 제어할 수 있도록 하나의 기능 단위로 만들어둔 서버측 구성 요소 이다.

1) 서버 컨트롤의 종류
 : ASP.NET 2.0 서버 컨트롤은 도구 상자 안에서 다음과 같이 여러 탭으로 나뉘어져 관리되고 있다.

 - 표준
 - 데이터 
 - 유효성 검사 
 - 탐색
 - 로그인 
 - 웹 파트
 - HTML

2) 표준 컨트롤(Standard Controls)
 : 표준 컨트롤은 웹 사이트에서 흔히 사용되는 컨트롤들, 예를 들어 TextBox, Button, DropDownList 등과 같은
  기본적인 기능을 하는 컨트롤들을 의미한다.


 - AdRotator
  : AdRotator는 우리가 웹 사이트에서 흔히 볼 수 있는 배너 광고들을 쉽게 구현할 수 있도록 해주는 컨트롤이다.

  [AdvertisementFile : 광고 정보를 포함하고 있는 XML 파일의 경로를 가져오거나 설정한다.]

  [KeywordFilter : XML 광고 파일에서 특정 범주(카테고리)별로 광고를 필터링할 때 사용하는 키워드를 가져오거나 설정.]

  [Target : AdRotator를 클릭할 때 링크되는 HTML 프레임 형식을 지정한다. 예를 들어 이 속성에 _blank를 지정하면 광고 클릭 시 새로운 창이 뜨게 된다.]


FrmAdRotator.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmAdRotator.aspx.cs" Inherits="FrmAdRotator" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>광고컨트롤</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:AdRotator ID="AdRotator1" runat="server" Width="500px" Height="180px" AdvertisementFile="~/FrmAdRotator.xml" />

    </div>

    </form>

</body>

</html>

 

 

FrmAdRotator.xml

 

<?xml version="1.0" encoding="utf-8" ?>

<Advertisements>

  <Ad>

    <ImageUrl>~/images/banner1.gif</ImageUrl>

    <NavigateUrl>http://www.VisualAcademy.com/</NavigateUrl>

    <AlternateText>비주얼아카데미</AlternateText>

    <Keyword>비주얼아카데미</Keyword>

    <Impressions>25</Impressions>

  </Ad>

  <Ad>

    <ImageUrl>~/images/banner2.gif</ImageUrl>

    <NavigateUrl>http://www.dotnetkorea.com/</NavigateUrl>

    <AlternateText>닷넷코리아</AlternateText>

    <Keyword>닷넷코리아</Keyword>

    <Impressions>25</Impressions>

  </Ad>

  <Ad>

    <ImageUrl>~/images/banner3.gif</ImageUrl>

    <NavigateUrl>http://www.dotnetkorea.com/</NavigateUrl>

    <AlternateText>닷넷코리아</AlternateText>

    <Keyword>닷넷코리아</Keyword>

    <Impressions>25</Impressions>

  </Ad>

  <Ad>

    <ImageUrl>~/images/banner4.gif</ImageUrl>

    <NavigateUrl>http://www.dotnetkorea.com/</NavigateUrl>

    <AlternateText>닷넷코리아</AlternateText>

    <Keyword>닷넷코리아</Keyword>

    <Impressions>25</Impressions>

  </Ad>

</Advertisements>







 - BulletedList
  : BulletedList 컨트롤은 기본적으로 Bullet 형식의 리스트를 표현할 때 사용하는 컨트롤이다. Bullet은 사전적으로 '총탄', '탄환', '작은 공',
   '(주의를 끌기 위해 찍는)굵은 점' 등의 뜻을 가진다. BulletedList 컨트롤에서 사용된 Bullet은 (주의를 끌기 위해 찍는)굵은 점의 의미로
   사용되었으며 (주의를 끌기 위해 찍는)굵은 점이란 다음과 같은 형식의 글머리 기호를 말한다.

   <BulletList 이미지>

   웹 페이지에서 이러한 형식의 리스트를 여러 개 작성해야 할 때 BulletedList 컨트롤을 사용하면 유용할 것이다. 또한 BulletedList 컨트롤은 각 항목의 
   글머리 기호로 숫자 또는 영문 형식을 사용할 수도 있다. 뿐만 아니라 각 항목에 링크를 걸거나 사용자가 특정 항목을 클릭했을 때 응답할 수도 있다.
   다음은 BulletedList 컨트롤의 주용 속성과 이벤트이다.

  [BulletStyle : 글머리 기호 스타일을 가져오거나 설정.]

  [DisplayMode : 목록의 디스플레이 모드를 가져오거나 설정. 만약 이 속성을 LinkButton으로 지정하면 각 항목 클릭 시 다시 게시(Postback)할 수 있으며 HyperLink로 지정하면 단순 링크를 걸 수 있다.]

  [BulletImageUrl : 글머리 기호에 표시할 이미지의 경로를 가져오거나 설정. 단, 글머리 기호에 이미지를 사용하기 위해서는 BulletStyle 속성을 CustomImage로 지정해야 한다.]

  [FirstBulletNumber : BulletStyle이 숫자(Numbered), 영문자(LowerAlpha, UpperAlpha) 및 로마문자(LowerRoman, UpperRoman)로 지정되어 있을 때 항목의 시작 값을 가져오거나 설정한다.]


 - Button
  : Button 컨트롤은 다시 게시(Postback)을 일으키는 서버 컨트롤 중 하나로서 사용자가 웹 서버에게 서비스 요청 의사를 표현하는 관문이 된다. 여기에서는 ASP.NET 2.0에서 새롭게 추가된 Button 컨트롤의
   OnClientClick 속성에 대해 알아본다.

  [Text : Button 컨트롤의 이름을 가져오거나 설정.] 

  [PostBackUrl : Button 컨트롤 클릭 시 페이지 간 게시에 사용될 URL.]

  [OnClientClick : Button 컨트롤 클릭 시 실행될 클라이언트 스크립트(Client Script)를 가져오거나 설정한다.]


  * 클라이언트 스크립트(Client Script) : 클라이언트 스크립트에서 스크립트(Script)는 '구문' 또는 '코드'를 의미한다.
   그러므로 클라이언트 스크립트는 클라이언트측(사용자 PC의 브라우저)에서 실행되는 구문을 말한다. 반대로 서버 스크립트는
   웹 서버에서 실행되는 구문을 말하며 ASP.NET에서는 C#, VB.NET, J# 등으로 서버 스크립트를 작성한다.
   대표적인 클라이언틑 스크립트에는 Java Script, VB Script 등이 있다. 이 클라이언트 스크립트는 굳이 서버측 프로세스를 사용할
   필요가 없는 프로세스들, 예를 들어 회원 가입 시 꼭 필요한 정보를 입력하지 않았을 때 메시지를 띄워주거나 주민번호 및 전자메일
   형식을 체크하는 등의 작업에 쓰일 수 있다.


 - Calendar
  : Calendar 컨트롤은 웹 사이트에서 달력을 쉽게 구현할 수 있도록 해준다. 또한 Calendar 컨트롤은 단순히 웹 사이트에서 달력을 보여주는
   기능뿐만 아니라 사용자가 특정 일(Day), 주(Week), 달(Month)을 선택하는 기능도 제공하고 특정 날짜에 메시지를 뿌려줄 수도 있으므로
   Calendar 컨트롤을 사용하면 달력을 이용한 일정표(Schedule)를 손쉽게 만들 수 있다. Calendar 컨트롤에는 여러 이벤트가 있는데 우리가 반드시 
   알고 있어야 하는 주요 이벤트는 다음과 같다.

  (1) SelectionChanged : 특정 일, 주, 달을 선택했을 때 발생
  (2) DayRender : 달력의 날짜 셀(cell)들이 하나씩 만들어질 때 발생

  [ShowDayHeader : 요일의 머리글 표시 여부를 나타내는 값을 가져오거나 설정합니다.]

  [ShowNextPrevMonth : Calendar 컨트롤의 제목 구역에 다음 달 및 이전 달 탐색 링크의 표시 여부를 나타내는 값을 가져오거나 설정.]

  [TodaysDate : 오늘 날짜의 값을 가져오거나 설정.]

  [SelectDate : 선택한 날짜를 가져오거나 설정.]

  [SelectDates : 선택한 날짜들(System.DateTime 개체의 컬렉션)을 가져옴.]

  [VisibleDate : Calendar 컨트롤에 표시할 달을 지정하는 개체를 가져오거나 설정.]

  [DayNameFormat : 요일의 이름 형식을 가져오거나 설정. 예를 들어 이 속성이 Short이면 '일', '월', '화' 이런식으로 요일이 출력되지만 이 속성이 Full이면 '일요일' 과 같은 형식으로 출력된다. 참고로 이 속성은 ShowDayHeader 속성이 true로 설정된 경우에만 적용된다.]

  [NextPrevFormat : 다음 달 및 이전 달 탐색 링크의 출력 형식을 가져오가나 설정. 참고로 이 속성은 ShowNextPreMonth 속성이 true로 설정된 경우에만 적용된다.]

  [NextMonthText : 다음 달 탐색 링크에 표시할 텍스트를 가져오가나 설정.]

  [PreMonthText : 이전 달 탐색 링크에 표시할 텍스트를 가져오거나 설정.]

  [SelectionMode : 달력에서 일, 주, 달을 선택할 수 있게 하거나 하지 못하게 한다. 참고로 어떤 날짜도 선택하지 못하게 하려면 이 속성에 None을 지정하면 된다.]

  [SelectMonthText : 달 선택 링크의 문구를 가져오거나 설정한다. SelectionMode 속성이 DayWeekMonth일 때 적용된다.]

  [SelectWeekText : 주 선택 링크의 문구를 가져오거나 설정한다. SelectionMode 속성이 DayWeek, DayWeekMonth일 때 적용된다.]

  [SelectionChanged : 특정 일, 주, 달을 선택했을 때 발생한다.]

  [DayRender : 서버에서 웹 페이지에 그려질 달력의 날짜 셀들이 만들어질 때 발생한다.]


FrmCalendar.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmCalendar.aspx.cs" Inherits="FrmCalendar" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>제목 없음</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:Calendar ID="Calendar1" runat="server"

            onselectionchanged="Calendar1_SelectionChanged"></asp:Calendar>

        <br />

        <asp:Label ID="lblDate" runat="server" Text=""></asp:Label>

        <hr />

        <asp:Calendar ID="Calendar2" runat="server" SelectionMode="DayWeekMonth"

            onselectionchanged="Calendar2_SelectionChanged"></asp:Calendar>

        <br />

        <asp:Label ID="lblDates" runat="server" Text=""></asp:Label>

        <br />

        <asp:Calendar ID="Calendar3" runat="server" BackColor="White"

            BorderColor="White" BorderWidth="1px" Font-Names="Verdana" Font-Size="9pt"

            ForeColor="Black" Height="190px" NextPrevFormat="FullMonth" Width="258px">

            <SelectedDayStyle BackColor="#333399" ForeColor="White" />

            <TodayDayStyle BackColor="#CCCCCC" />

            <OtherMonthDayStyle ForeColor="#999999" />

            <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333"

                VerticalAlign="Bottom" />

            <DayHeaderStyle Font-Bold="True" Font-Size="8pt" />

            <TitleStyle BackColor="White" BorderColor="Black" BorderWidth="4px"

                Font-Bold="True" Font-Size="12pt" ForeColor="#333399" />

        </asp:Calendar>

    </div>

    </form>

</body>

</html>

 

 

FrmCalendar.aspx.cs

 

using System;

 

public partial class FrmCalendar : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void Calendar1_SelectionChanged(object sender, EventArgs e)

    {

        // 현재 선택된 날짜/시간값을 출력

        this.lblDate.Text = Calendar1.SelectedDate.ToLongDateString();

    }

    protected void Calendar2_SelectionChanged(object sender, EventArgs e)

    {

        // 현재 선택된 범위의 날짜값을 출력

        string s = "";

        foreach (DateTime item in Calendar2.SelectedDates)

        {

            s += item.ToShortDateString() + "<br />";

        }

        lblDates.Text = s;

    }

}







 - TextBox
  : TextBox 컨트롤은 주로 문자 정보를 입력받을 때 사용하며 사용 빈도가 매우 높다.

  [Text : TextBox 컨트롤의 텍스트 내용을 가져오거나 설정한다.]

  [AutoPostBack : TextBox 컨트롤에서 사용자가 Enter 또는 Tab 키를 누를 때마다 서버에 자동으로 다시 게시 되는지 여부를 나타내는 값을 가져오거나 설정한다.]

  [TextMode : TextBox 컨트롤의 동작 모드(한 줄, 여러 줄, 암호 모드)를 가져오거나 설정한다.]

  [Columns : TextBox 컨트롤의 표시 너비(문자 단위)를 가져오거나 설정한다.]

  [MaxLength : TextBox 컨트롤에 입력할 수 있는 최대 문자수를 가져오거나 설정한다.]

  [Rows : TextBox 컨트롤의 행 수를 가져오거나 설정한다. 이 속성은 TextMode 속성이 MultiLine일 때만 유효하다.]

  [TextChanged : TextBox 컨트롤의 텍스트 내용이 변경되었을 때 발생한다.]

FrmTextBox.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmTextBox.aspx.cs" Inherits="FrmTextBox" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>제목 없음</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        SingleLine:<br />

        이름 :

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

        <br />

        <br />

        MultiLine<br />

        소개 :<asp:TextBox ID="txtMultiLine" runat="server" TextMode="MultiLine"

            Rows="5" Columns="40"></asp:TextBox>

        <br />

        <br />

        Password<br />

        암호 :<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>

        <br />

        <br />

        <asp:Button ID="btnOK" runat="server" Text="확인" onclick="btnOK_Click" /><br />

        <asp:Label ID="lblDisplay" runat="server" Text=""></asp:Label>

    </div>

    </form>

</body>

</html>

 

 

FrmTextBox.aspx.cs

 

using System;

 

public partial class FrmTextBox : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void btnOK_Click(object sender, EventArgs e)

    {

        // 이름

        string name = txtSingleLine.Text;

        // 소개

        string intro = txtMultiLine.Text;

        // 암호

        string password = txtPassword.Text;

 

        // 레이블에 출력

        this.lblDisplay.Text = String.Format("{0}{1}{2}{1}{3}{1}", name, "<br />"

            , intro.Replace("\r\n", "<br />"), password);

    }

}







 - Label
  : Label 컨트롤은 특정 값을 해당 위치에 출력하는 아주 단순한 기능을 하는 컨트롤이다. 또한 ASP.NET 2.0에 새로 추가된 Label 컨트롤의 AssociatedControlID라는
   속성을 사용하면 다른 서버 컨트롤의 기능을 확장할 수 있으며 특히, AccessKey 속성과 연동하면 웹 페이지에서 단축키를 일관성 있게 구현할 수 있다.

  [Text : Label 컨트롤의 텍스트 내용을 가져오거나 설정한다.]

  [AccessKey : 서버 컨트롤을 빠르게 탐색할 수 있는 단축키 문자(Alt키와 조합)를 가져오거나 설정한다.]

  [AccociatedControlID : Label 컨트롤과 연결되는 서버 컨트롤에 대한 ID를 가져오거나 설정한다. Label 컨트롤이 다른 서버 컨트롤과 연결되면 특성을 사용하여 연결된 컨트롤의 기능을 확장할 수 있다(탭 인덱스 또는 바로가기 키 설정 등등).]


 - Literal
  : Literal 컨트롤은 Label 컨트롤과 마찬가지로 단순히 문자를 출력하는 컨트롤입니다. 하지만 이 둘은 서로 다른 점을 가지고 있는데 그것은 렌더링(Rendering) 형식이 다르다는 것이다.

  [Text : Literal에 표시된 텍스트 내용을 가져오거나 설정한다.]

  [Mode : Literal의 텍스트 내용이 렌더링되는 방법을 지정하는 열거형 값을 가져오거나 설정한다.]

  [PassThrough : 컨트롤 내용이 수정되지 않는다. 예를 들어, Literal 컨트롤의 Text 속성에 <hr> 태그가 있으면 이 태그는 지원 여부에 관계없이 모든 장치와 브라우저에 전달된다.]

  [Encode : 컨트롤의 내용이 HTML로 인코딩된 문자열로 변환된다. 예를 들어, Literal 컨트롤의 Text 속성에 <hr> 태그가 있으면 이 태그는 HTML이나 XHTML이 아닌 WML 또는 cHTML과 같은 태그 언어를 사용하는 장치에 전달될 때 제거된다.]

  [Transform : 기본]

FrmLiteral.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmLiteral.aspx.cs" Inherits="FrmLiteral" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>리터럴 : 문자열/태그 출력</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    HTML :

        <span>순수 태그로 출력</span>

        <br />

   

    레이블 :

        <asp:Label ID="Label1" runat="server" Text="레이블로 출력"></asp:Label>

        <br />

        <asp:Label ID="Label2" runat="server" Text="<hr />"></asp:Label>

        <br />

       

    리터럴 : 자리 역할, 원하는 위치에 무엇인가 출력해 주고 싶을

        <asp:Literal ID="Literal1" runat="server" Text="리터럴 컨트롤"></asp:Literal>

        <br />

        <asp:Literal ID="Literal3" runat="server" Text="<hr />"></asp:Literal>

        <br />

        <asp:Literal ID="Literal2" runat="server" Text="<hr />" Mode="Encode"></asp:Literal>

       

    <!--Mode="Encode" 하면 <hr /> 실행하지 않고 그대로 보여줌   

    레이블 컨트롤은 실행 했을 모든 태그를 span태그로 묶음

    리터럴은 아무런 태그도 만들어지지 않고 원하는 자리에 출력 가능.

    태그로 묶이지 않기 때문에 간결

    일반적으로 레이블 컨트롤 보다 리터럴 컨트롤을 권장함

    게시판의 답변달 리터럴 컨트롤 사용-->

    </div>

    </form>

</body>

</html>




 

 - Panel
  : Panel은 다른 서버 컨트롤이나 HTML 및 정적 텍스트 등을 하나의 단위(unit)로 그룹핑하는 컨테이너 역할을 하는 컨트롤이다. 'Panel'이 사전적으로 '(직사각형의)합판', '(특정 공간의)구획' 등의 의미를 가지므로 Panel 위에 올려진 모든 것들은 같은 구획에서 하나로
   묶인다고 생각하면 된다. 또한 Panel은 동적으로 생성된 서버 컨트롤들을 포함하거나 BackColor와 같은 스타일 관련 속성을 통해 웹 페이지 내에서 사용자의 시선을 집중시키는 데 사용될 수 있다.

  [Visible : Panel 컨트롤의 보임 여부를 나타내는 값을 가져오거나 설정한다. 만약 이 속성이 false라면 Panel 내부에 포함된 모든 요소들은 렌더링되지 않는다.]

  [BackImageUrl : Panel 컨트롤의 배경 이미지 URL을 가져오거나 설정한다.]

  [HorizontalAlign : 텍스트의 가로 정렬을 가져오거나 설정한다.]

  [Wrap : Panel 안에 있는 텍스트의 자동 줄 바꿈 여부를 나타내는 값을 가져오거나 설정한다.]

  [ScrollBars : Panel의 스크롤 사용 형식을 가져오거나 설정한다.]

  [Direction : 텍스트의 표시 방향을 가져오거나 설정한다.]


 - LinkButton
  : LinkButton은 Button 컨트롤과 마찬가지로 다시 게시(Postback)를 일으키는 서버 컨트롤이며 LinkButton이 브라우저에 렌더링될 때에는 링크 형식으로 렌더링된다.
   하지만 LinkButton은 링크가 아니라 다시 게시(Postback)를 일으키는 버튼임을 알고 있어야 한다.

  [Text : LinkButton 컨트롤의 이름을 가져오거나 설정한다.]

  [PostBackUrl : LinkButton 컨트롤 클릭 시 페이지 간 게시에 사용될 URL을 가져오거나 설정한다.]

  [OnClientClick : LinkButton 컨트롤 클릭 시 실행될 클라이언트 스크립트를 가져오거나 설전한다.]

FrmLinkButton.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmLinkButton.aspx.cs" Inherits="FrmLinkButton" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>링크 버튼 : 하이퍼링크</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        <a href="http://www.dotnetkorea.com/" target="_blank">닷넷코리아</a>

        <hr />

        <asp:LinkButton ID="lnkVisualAcademy" runat="server"

            onclick="lnkVisualAcademy_Click">비주얼아카데미</asp:LinkButton>

        <hr />

        <asp:HyperLink ID="lnkJavaCampus" runat="server" NavigateUrl="http://www.JavaCampus.com">자바캠퍼스</asp:HyperLink>

        <hr />

        <asp:ImageButton ID="imgDotNetNote" runat="server" ImageUrl="http://www.dotnetkorea.com/images/btn_home.gif"

            Width="32px" Height="32px" AlternateText="홈페이지로 이동"

            onclick="imgDotNetNote_Click" />

        <br />

    

 <!--서버 컨트롤 :기본 값으로 설정해 값을 실행 시에 동적으로 바꿔 있음-->

   

    </div>

    </form>

</body>

</html>

 

 

FrmLinkButton.aspx.cs

 

using System;

using System.Web.UI;

 

public partial class FrmLinkButton : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        // HTML 달리 서버컨트롤(runat=server)들은 런타임 시에 동적으로 변경 가능

        if (DateTime.Now.Second % 2 == 0)

        {

            this.lnkJavaCampus.Text = "짜빠 캠퍼스";

        }

        else

        {

            this.lnkJavaCampus.Text = "자바 캠퍼스";

        }

 

    }

    protected void lnkVisualAcademy_Click(object sender, EventArgs e)

    {

        // 링크 버튼은 이벤트 처리기 사용

        Response.Redirect("http://www.VisualAcademy.com");

    }

    protected void imgDotNetNote_Click(object sender, ImageClickEventArgs e)

    {

        // EventArgs앞에 무언가 붙으면 e. 찍으면 무언가 얻을 있음

        // 이미지를 기준으로 좌표값을 나눠줌

        if (e.X < 16)

        {

            Response.Redirect("http://www.dotnetkorea.com/");

        }

        else

        {

            Response.Redirect("http://www.visualacademy.com/");

        }

    }

}






 - ImageButton
  : ImageButton 컨트롤은 Button, LinkButton 컨트롤과 마찬가지로 다시 게시(Postback)를 일으키는 서버 컨트롤이며 버튼 위에 이미지를 입힐 수 있기 대문에 디자인을 중시하는
   실무에 많이 사용되는 컨트롤이다.

  [AlternateText : 이미지를 사용할 수 없을 때 ImageButton 컨트롤에 표시할 대체(Alternate) 텍스트를 가져오거나 설정한다.]

  [ImageUrl : ImageButton 컨트롤에 표시할 이미지의 경로를 가져오거나 설정한다.]

  [PostBackUrl : ImageButton 컨트롤 클릭 시 페이지 간 게시에 사용될 URL을 가져오거나 설정한다.]

  [OnClientClick : ImageButton 컨트롤 클릭 시 실행될 클라이언트 스크립트를 가져오거나 설정한다.]


 - CheckBox
  : CheckBox 컨트롤은 말 그대로 체크(Check)할 수 있는 박스를 서버 컨트롤로 만든 것이며 사용자가 여러 항목을 선택해야 할 때 주로 이 CheckBox 컨트롤을 사용한다.

  [Text : CheckBox 컨트롤의 이름을 가져오거나 설정.]

  [TextAlign : CheckBox 컨트롤의 이름 정렬 방법을 가져오거나 설정.]

  [Checked : Checkbox 컨트롤이 선택되어 있는지의 여부를 나타내는 값을 가져오거나 설정.]

  [Enabled : CheckBox 컨트롤의 활성화 여부를 나타내는 값을 가져오거나 설정. 만약 이 속성이 False이면 CheckBox 컨트롤은 회색처리(비활성화 처리)되어 사용할 수 없게 된다.]

  [AutoPostBack : CheckBox 컨트롤의 체크 상태가 변경될 때 자동으로 다시 게시(Postback)되는지의 여부를 나타내는 값을 가져오거나 설정.]

  [CheckedChanged : CheckBox 컨트롤의 체크 상태가 변경될 때 발생하는 이벤트.]


 - DropDownList
  : DropDownList 컨트롤은 리스트 컨트롤이며 여러 항복 중 하나의 항목을 선택할 수 있도록 하는 컨트롤이다.

  [AutoPostBack : DropDownList 컨트롤 안에 있는 항목(ListItem)의 선택이 변경될 때 자동으로 다시 게시되는지의 여부를 나타내는 값을 가져오거나 설정한다.]

  [Items : DropDownList 컨트롤 안에 있는 항목(ListItem)의 묶음, 즉 항목의 컬렉션(Collection)을 가져온다.]

  [SelectedIndex : 선택된 항목의 인덱스를 가져오거나 설정한다. 인덱스는 Zero-Base(0부터 시작)이다.]

  [SelectedItem : 선택된 항목(ListItem)을 가져온다.]

  [SelectedIndexChanged : DropDownList 컨트롤 안에 있는 항목의 선택 사항이 변경될 때 발생한다.]

   앞에서도 언급했지만 리스트 컨트롤은 데이터베이스와 연동할 때 주로 사용한다. 아직은 데이터베이스 연동 부분을 공부하지 않았으므로 ArrayList라는 클래스를
  통해 ArrayList 형식의 개체를 만들고 이 개체를 DropDownList에 바인딩하는 예제를 작성해 보자. ArrayList도 데이터베이스와 마찬가지로 데이터 집합을 가지므로 
  하나의 데이터 소스(Data Source)로 볼 수 있다.

  
 - HyperLink
  : HyperLink 컨트롤은 링크를 거는 Anchor 태그(<a>)를 서버측에서 사용할 수 있도록 만든 컨트롤이다.

  [NavigateUrl : HyperLink 컨트롤을 클릭할 때 이동할 페이지의 URL을 가져오거나 설정한다.]

  [Target : HyperLink 컨트롤을 클릭할 때 링크되는 HTML 프레임 형식을 지정한다. 기본값은 빈 문자열("")이다.]

  [ImageUrl : HyperLink 컨트롤에 텍스트를 사용하지 않고 이미지를 사용할 경우 이미지 경로를 가져오거나 설정한다.]


 - Table
  : Table 컨트롤은 HTML에서 사용되는 테이블 태그(<table>)를 서버측에서 프로그래밍 방식으로 제어하기 위해 만든 컨트롤이다. HTML에서 <table> 태그는 하위에 <tr>
   태그를 가지고 있고, 또 이 <tr> 태그를 가지고 있는 계층적 구조이듯이 Table 컨트롤도 계층적 구조를 가진다. 다음 그림은 Table 컨트롤의 구조를 나타낸 것이다.

<Table 컨트롤의 구조>

   Table 컨트롤은 여러 개의 TableRow 컬렉션을 가지고 있으며 TableRow는 여러 개의 TableCell 컬렉션을 가진다. 그리고 이러한 형태를 갖춘 Table 컨트롤이 사용자의 웹
   브라우저로 렌더링되면 실제 완전한 <table> 태그 형태로 나타낸다.

  [Caption : Table 컨트롤의 이름(캡션)을 가져오거나 설정한다.]

  [CaptionAlign : Table 컨트롤 이름(캡션)의 가로 또는 세로 위치를 가져오거나 설정한다.]

  [GridLines : Table 컨트롤의 라인 형태를 가져오거나 설정한다.]

  [CellPadding : 셀 내용과 셀 테두리 사이의 여백 크기를 가져오거나 설정한다.]

  [CellSpacing : 셀 사이의 여백 크기를 가져오거나 설정한다.]

  [HorizontalAlign : Table 컨트롤의 수평 정렬 방법을 가져오거나 설정한다.]

  [Rows : Table 컨트롤을 구성하는 TableRow 개체의 컬렉션을 가져온다.]

  [HorizontalAlign : TableRow의 수평 정렬 방법을 가져오거나 설정한다.]

  [VerticalAlign : TableRow의 수직 정렬 방법을 가져오거나 설정한다.]

  [Cells : TableRow를 구성하는 TableCell 개체의 컬렉션을 가져온다.]

  [ColumnSpan : 수평 뱡향으로 병합할 칼럼의 수를 가져오거나 설정한다.]

  [RowSpan : 수직 뱡향으로 병합할 칼럼의 수를 가져오거나 설정한다.]

  [HorizontalAlign : TableCell의 수평 정렬 방법을 가져오거나 설정한다.]

  [VerticalAlign : TableCell의 수직 정렬 방법을 가져오거나 설정한다.]


 - Image
  : Image 컨트롤은 ImageUrl 속성에 지정한 이미지를 보여주는 컨트롤이다.

  [ImageUrl : 이민지의 경로를 가져오거나 설정한다.]

  [ImageAlign : 이미지의 정렬 방법을 가져오거나 설정한다.]

  [AlternateText : 이미지를 사용할 수 없을 때 Image에 표시할 대체(Alternate) 텍스트를 가져오가 설정한다. 이 속성은 도구 설명 기능을 지원하는 브라우저에서 이미지 위로 마우스를 올렸을 대 나타나는 툴팁 형식의 텍스트로도 사용된다.]

  [DescriptionUrl : 이미지에 대한 자세한 설명이 있는 파일의 URL을 가져오거나 설정.]


 - ImageMap
  : ImageMap은 이미지를 특정 영역으로 분할하고 분할된 영역을 사용자가 선택할 수 있게 하는 컨트롤이다.
   ImageMap 컨트롤 하위에는 <asp:RectangleHotSpot>, <asp:CirleHotSpot>, <asp:PolygonHotSpot> 요소가 올 수 있으며
   각각 사각형, 원, 다각형 영역으로 이미지를 분할할 때 사용된다.

  [ImageUrl : 이미지의 경로를 가져오거나 설정한다.]

  [ImageAlign : 이미지의 정렬 방법을 가져오가나 설정한다.]


 - FileUpload
  : FileUpload는 클라이언트에 있는 파일을 서버로 전송할 때 사용하는 컨트롤이다. ASP.NET 1.x 에서는 파일 업로드를 위해 HTML FileUpload 컨트롤을 지원했었다.
   하지만 HTML FileUpload 컨트롤을 서버측에서 제어하기 위해 runat="server" 속성을 추가해야 했으며, 정상적인 업로드를 위해 <form> 태그에 enctype="multipart/form-data" 속성을 반드시 추가시켜야 했다.
   이러한 불편함 때문에 ASP.NET 2.0은 서버측에서 제어할 수 있는 FileUpload 컨트롤을 새로 지원하고 있으며 FileUpload 컨트롤을 사용하면 조금 전에 열거한 귀찮은
   작업들을 더 이상 하지 않아도 된다.

  [FileName : 업로드할 클라이언트의 파일 이름을 가져온다.]

  [PostedFile : 첨부된 파일 개체(HttpPostedFile)를 가져온다.]

  [HasFile : 업로드할 파일이 있는지의 여부를 나타내는 값을 가져온다.]


 - HiddenField
  : HiddenField 컨트롤도 FileUpload 컨트롤과 마찬가지로 ASP.NET 1.x에서 HTML 컨트롤로 지원했었지만 ASP.NET 2.0으로 오면서 서버 컨트롤 형태로 다시 추가된 컨트롤이다.
   HiddenField 컨트롤은 브라우저에 '<input type=hidden>' HTML 태그로 렌더링되면 주로 다시 게시 후 웹 페이지의 상태값을 저장하기 위한 용도로 사용한다. 보면 알겠지만 
   '<input type=hidden>' 태그는 웹 브라우저에 보여지지 않는 태그이다.

  [Value : HiddenField 컨트롤의 값을 가져오거나 설정한다.]

  [Visible : HiddenField 컨트롤을 <input type='hidden'> 태크로 렌더링하던지, 아니면 뷰 상태에 저장할지 여부를 나타내는 값을 가져오거나 설장한다. [True(기본값), False], 만약 이 속성이 True이면 Hidden Field 컨트롤을 <input type='hidden'> 태그로 렌더링하며, 이 속성이 False 이면 HiddenField 컨트롤의 정보를 뷰 상태에 저장한다.]

  [ValueChanged : HiddenField 컨트롤의 값이 변경되면 발생한다.]


 - MultiView와 View
  : MultiView 컨트롤과 View 컨트롤은 Panel 컨트롤, PlaceHolder 컨트롤과 마찬가지로 다른 서버 컨트롤 및 태그에 대한 컨테이너 역할을 하는 컨트롤이다. MultiView와 View는 항상 같이 붙어 다니며 MultiView가 View를 포함하는 관계를 가진다. Panel 및 PlaceHolder 컨트롤을 여러 개 사용하여 특정 영역을 나누어야 할 때 MultiView와 View를 사용하면
   좀더 일관성 있게 영역을 나눌 수 있다.

  [ActiveViewIndex : MultiView 컨트롤에 있는 활성 View 컨트롤의 인덱스를 가져오거나 설정한다. 기본값은 -1이면 이것은 어떤 View 컨트롤도 활성화되지 않았음을 의미한다.]

  [Views : MultiView 컨트롤에 있는 View 컨트롤의 컬렉션을 가져온다.]

  [Visible : MultiView 컨트롤의 보임 여부를 나타내는 값을 가져오거나 설정한다.]

  [ActiveViewChanged : MultiView 컨트롤의 활성 View 컨트롤이 변경되면(사용자가 특정 View에서 다른 View로 옮겨 갈 때) 이 이벤트가 발생한다.]

  [Controls : View 컨트롤 안에 포함된 하위 Control의 컬렉션(Control)을 가져온다.]

  [Visible : View 컨트롤의 보임 여부를 나타내는 값을 가져오거나 설정한다.]

  [Activate : 현재 View 컨트롤이 활성화될 때 발생한다.]

  [Deactivate : 현재 활성 View 컨트롤이 비활성화될 때 발생한다.]


 - Wizard 
  : Wizard  컨트롤은 일련의 순서를 가지는 작업들을 손쉽게 처리할 수 있도록 도와주는 컨트롤이다. 원래 컴퓨터 용어로 봤을 때 마법사(Wizard)는 복잡한 응용 프로그램의 사용이나 설치를 초보자도 쉽게 할 수 있도록 도와주는 프로그램을 일컫는 말이다.
   ASP.NET 2.0 의 Wizard 컨트롤은 이런 기능을 물론이고 특정 순서(절차)를 가지는 작업들을 손쉽게 처리할 수 있도록 해준다. 예를 들어, 쇼핑몰 같은 경우 보통 아래와 같은 절차를 따른다.
   
    (1) 물품 선택
    (2) 주문자 정보 입력(이름, 전화 번호, 주소)
    (3) 주문 확인(물품 및 수량, 주무자 정보)
    (4) 결제
    (5) 결제 확인

   이와 같이 특정 절차를 따르는 프로세스가 있을 경우 Wizard 컨트롤을 사용하면 일관성 있게 해당 프로세스를 구현할 수 있다. 그외 설문 조사, 메뉴얼 설명, 온라인 강의화 같은 기능을 구현할 때에도 이 Wizard 컨트롤이 유용하게 사용될 수 있다.

  [Wizard Step : Wizard의 실질적인 콘텐츠가 놓여지는 부분이며 여러 개의 Wizard Step이 Wizard 컨트롤에 포함될 수 있다. 그리고 보여질 때는 한번에 한 Wizard Step씩 보인다.]

  [Header : Wizard 컨트롤의 제목이면 Wizard Step이 바뀌더라도 Header는 고정적으로 따라다닌다]

  [Navigation Buttons : Wizard Step 하위에 위치하며 <다음>, <이전>, <마침> 등의 버튼을 통해 Wizard Step을 순차적으로 옮겨 다닐 수 있게 해준다.]

  [Side Bar : Wizard Step 리스트이다. Side Bar를 이용하면 Navigation Button을 통해 순차적으로 Wizard Step을 옮겨 다닐 필요없이 바로 원하는 Wizard Step으로 이동할 수 있다.]

  * Wizard의 Step 형식

  [Start : 최초 시작 Wizard Step이며 <다음> 버튼 하나만 가진다.]

  [Step : Start 현식과 Finish 형식 중간에 위치하는 Wizard Step이며 <이전> 버튼과 <다음> 버튼을 가진다.]

  [Finish : Complete 형식 바로 전 단계의 Wizard Step이며 <이전> 버튼과 <마침> 버튼을 가진다.]

  [Complete : 보통 가장 마지막에 위치하는 Wizard Step이며 Header, Navigation Buttons, Side Bar 요소가 모두 사라지고 컨텐츠 부분만 남는다.]


 - Xml
  : Xml 컨트롤은 XML 문서의 내용을 웹에 출력하는 역할을 하는 컨트롤이다.

  [DocumentSource : XML 컨트롤에 표시할 XML 문서의 경로를 가져오거나 설정한다.]

  [TransformSource : XML 문서의 내용을 출력하기 전에 XML 문서의 서식을 지정하는 XSLT(eXtensible Stylesheet Language Transformation)의 경로를 가져오거나 설정한다.]


 - Substitution
  : Substitution 컨트롤은 출력 캐싱된 웹 페이지에서 특정 영역만 캐싱하지 않을 때 사용하는 컨트롤이다. 




3) HTML 컨트롤

 : HTML 컨트롤은 HTML 태그와 1:1로 매핑되는 서버 컨트롤이다. 하지만, HTML 컨트로을 웹 폼위로 끌어다 놓고 웹 폼의 소스 뷰에서 이 컨트롤을 보면 단순 HTML 태그일을 알 수 있다.
  HTML 컨트롤을 단순히 웹 폼 위로 끌어다 놓는다고 해서 서버 컨트롤로 사용할 수 있는 것은 아니며 서버 컨트롤로 사용하기 위해서는 이 컨트롤에 속성 하나를 추가해야 한다.
  바로 runat 속성이며 이 속성에 "server" 라는 값을 지정해 주어야 한다. 또한 서버 컨트롤이 되기 위해서는 ID 속성도 필요한데 이것은 HTML 컨트롤을 웹 폼위로 올렸을 때 VS 2005에서
  자동으로 만들어 준다. 

  HTML 컨트롤에 runat="server"를 추가하고 서버 컨트롤로 만들면 웹 폼 디자인 뷰에서 HTML 컨트롤 좌측 상단에 녹색 화살표가 나타난다. 이 녹색 화살표는 해당 컨트롤이 서버 컨트롤임을 표시하는
  기호이다. 
  참고로 다음과 같이 웹 폼의 디자인 뷰에서 HTML 컨트롤을 마우스 오른쪽 버튼을 클릭하고 '서버 컨트롤로 실행' 메뉴를 클릭하면 HTML 컨트롤에 자동으로 runat="server"가 추가되므로 runat 속성을 직접 타이핑하여
  입력하지 않아도 된다.




4) 유효성 검사 컨트롤(Validation Controls)

 : 유효성 검사 컨트롤은 사용자가 입력한 데이터의 유효성을 판단해 주는 컨트롤이다. 예를 들어 회원 가입 시 사용자들은 주민번호, 우편번호, 전자메일 등의 정보를 입력하게 되는데 이렇게
  입력한 정보가 유효한 정보인지를 판단할 때 유효성 검사 컨틀롤이 사용된다.

 - RequiedFieldValidator
  : RequiedFieldValidator 컨트롤은 필수 입력 사항을 체크한다. 즉, 회원 가입 시 필수적으로 입력해야 하는 이름, 아이디, 비밀번호와 같은 정보의 입력 유무를 체크하는데 이 컨트롤을 사용할 수 있다.

  [ControlToValidate : 검사할 서버 컨트롤의 ID를 가져오거나 설정한다.]

  [ErrorMessage : 정보가 유효하지 않을 경우 표시할 오류 메시지를 가져오거나 설정한다.]

  [InitialValue : 초기값을 가져오거나 설정한다. 초기값을 설정되면 사용자가 입력한 값이 초기값과 다를 경우에만 유효한 경우로 인식된다.]

  [Display : 오류 메시지가 보여지는 형식을 가져오거나 설정한다.]

  [ValidationGroup : 이 유효성 검사 컨트롤이 속하는 유효성 검사 그룹의 이름을 가져오거나 설정한다.]

  [SetFocusOnError : 정보가 유효하지 않을 경우 ControlToValidate 속성에서 지정된 컨트롤에 포커스를 설정할지 여부를 나타내는 값을 가져오거나 설정한다.]

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmRequiredFieldValidator.aspx.cs" Inherits="FrmRequiredFieldValidator" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        입력 확인 유효성 검사 컨트롤<br />

        <br />

        <br />

        아이디 :<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>

        [<asp:RequiredFieldValidator ID="valUserID" runat="server" ControlToValidate="txtUserID" ValidationGroup="Login" Display="Dynamic"

            ErrorMessage="아이디를 입력하시오."></asp:RequiredFieldValidator>]

        <br />

        암호 :<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>

        [<asp:RequiredFieldValidator ID="valPassword" runat="server" ControlToValidate="txtPassword" ValidationGroup="Login" Display="Static"

            ErrorMessage="암호를 입력하시오."></asp:RequiredFieldValidator>]

        <br />

        <asp:Button ID="btnLogin" runat="server" Text="로그인" ValidationGroup="Login" />      

    </div>

    </form>

</body>

</html 







 - CompareValidator

  : CompareValidator 컨트롤은 사용자가 입력한 값과 다른 컨트롤의 값을 비교 연산하는데 사용하는 컨토롤이다.

  [ControlToValidate : 유효성을 검사할 컨트롤의 ID를 가져오거나 설정한다.]

  [ControlToCompare : 비교할 컨트롤의 ID를 거져오거나 설정한다.]

  [ErrorMessage : 정보가 유효하지 않을 경우 표시할 오류 메시지를 가져오거나 설정한다.]

  [Operator : 유효성 검사에 사용할 비교 연산을 가져오거나 설정한다.]

  [ValueToCompare : 비교할 대상이 컨트롤이 아닌 특정 값일 때 그 값을 가져오거나 설정한다.]

  [Type : ValueToCompare 속성을 사용할 때 값의 데이터 형식을 지정한다.]

  [ValidationGroup : 이 유효성 검사 컨트롤이 속하는 유효성 검사 그룹의 이름을 가져오거나 설정한다.]

  [SetFocusOnError : 정보가 유효하지 않을 경우 ControlToValidate 속성에서 지정된 컨트롤에 포커스를 설정할지의 여부를 나타내는 값을 가져오거나 설정한다.]


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmCompareValidator.aspx.cs" Inherits="FrmCompareValidator" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        비교<br />

        <br />

        암호 :

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

        <asp:CompareValidator ID="CompareValidator1" runat="server"

            ControlToValidate="txtPassword"

            ControlToCompare="txtPasswordConfirm"

            ErrorMessage="암호를 확인하세요."></asp:CompareValidator>

        <br />

        암호확인 :<asp:TextBox ID="txtPasswordConfirm" runat="server"></asp:TextBox>

        <br />

        <br />

        <asp:LinkButton ID="btnLogin" runat="server">로그인</asp:LinkButton>   

    </div>

    </form>

</body>

</html>








 - RangeValidator
  : RangeValidator 컨트롤은 사용자가 입력한 값이 특정 범위 안에 있는지를 체크한다.

  [MaximumValue : 유효성 검사 범위의 최대값을 가져오거나 설정한다.]

  [MinimumValue : 유효성 검사 범위의 최소값을 가져오거나 설정한다.]

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmRangeValidator.aspx.cs" Inherits="FrmRangeValidator" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        범위<br />

        <br />

        나이 :

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

        (1~150)

        <asp:RangeValidator ID="valAge" runat="server"

            ControlToValidate="txtAge"

            MinimumValue="1"

            MaximumValue="150"

            Type="Integer"

            ErrorMessage="나이는 1~150까지 입력하시오."></asp:RangeValidator>

        <br />

        <br />

        <asp:Button ID="btnLogin" runat="server" Text="확인" />

   

    </div>

    </form>

</body>

</html>






 - RegularExpressionValidator
  : RegularExpressionValidator 컨트롤은 사용자가 입력한 값이 정해진 정규식(패턴)을 따르는지를 검사하는 컨트롤이다. 우편번호, 전화번호, 전자메일 등과 같은 정보들은 정해진
   패턴을 그대로 따르며 RegularExpressionValidator 컨트롤을 사용하면 사용자가 입력한 값이 이러한 패턴을 제대로 따르는지를 체크할 수 있다.

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmRegularExpressionValidator.aspx.cs" Inherits="FrmRegularExpressionValidator" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        정규식(정규표현식) 검사?<br />

        이메일 :

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

        <asp:RegularExpressionValidator ID="valEmail" runat="server"

            ControlToValidate="txtEmail"          

            ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

            ErrorMessage="이메일을 정확히"></asp:RegularExpressionValidator>

        <br />

        <br />

        <asp:Button ID="btnOK" runat="server" Text="확인" />

    </div>

    </form>

</body>

</html>








 - CustomValidator
  : CustomValidator 컨트롤은 사용자에 의해 입력된 값을 개발자가 임의로 만든 유효성 검사 로직을 통해 체크하는 컨트롤이다.


FrmCustomerValidator.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmCustomValidator.aspx.cs" Inherits="FrmCustomValidator" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

    <script> // 클라이언트 레벨이라 서버에 부하를 줄여줌

        function ClientValidate(sender, args) {

            if (args.Value.length < 3 || args.Value.length > 12) {

                args.IsValid = false;

            }

            else {

                args.IsValid = true;

            }

        }

    </script>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        아이디 :

        <asp:TextBox ID="txtUserID" runat="server"></asp:TextBox><br />

        <asp:Button ID="btnOK" runat="server" Text="확인" />

       

        <asp:CustomValidator ID="CustomerValidator1" runat="server"

            ControlToValidate="txtUserID"

            ClientValidationFunction="ClientValidate"

            ErrorMessage="아이디는 3 이상 12 이하"

            onservervalidate="valCustomer_ServerValidate"></asp:CustomValidator>

    </div>

    </form>

</body>

</html>

 

 

FrmCustomerValidator.aspx.cs

 

using System;

using System.Web.UI.WebControls;

 

public partial class FrmCustomValidator : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void valCustomer_ServerValidate(object source, ServerValidateEventArgs args)

    {

        // 서버 컨트롤로 있는 최대한 자바스크립트로 처리

        // 서버의 부하를 줄여주기 위해서

        string userID = args.Value; // 지정된 텍스트박스의 값을 받아서

        if (userID.Length < 3 || userID.Length > 12)

        {

            args.IsValid = false; // 에러

        }

        else

        {

            args.IsValid = true; // 유효성 통과

        }

    }

}







 - ValidationSummary
  : ValidationSummary 컨트롤은 지금까지 소개한 5개의 유효성 검사 컨트롤에 의해 체크된 유효성 결과를 하나로 모아 출력해 주는 컨트롤이다.

  [DisplayMode : 유효성을 검사 결과를 수집하여 출력할 때 출력되는 형식을 가져오거나 설정한다.]

  [ShowMessageBox : 유효성 검사 결과를 메시지 박스에 표시할지의 여부를 나타내는 값을 가져오거나 설정한다.]

  [ShowSummary : 유효성 검사 결과를 인라인으로 표시할지의 여부를 나타내는 값을 가져오거나 설정한다.]


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmValidationSummary.aspx.cs" Inherits="FrmValidationSummary" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        아이디 :

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

        <br />

        이름 :

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

        <br />

        <asp:Button ID="btnOK" runat="server" Text="확인" />

        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"

            ControlToValidate="txtUserID" Display="None"

            ErrorMessage="아이디 입력"></asp:RequiredFieldValidator>

        <asp:RequiredFieldValidator ID="valName" runat="server"

            ControlToValidate="txtName" Display="None"

            ErrorMessage="이름 입력"></asp:RequiredFieldValidator>

        <asp:ValidationSummary ID="valSummary" runat="server"

            ShowMessageBox="true" ShowSummary="false"/>

    </div>

    </form>

</body>

</html>







 5) 사용자 정의 컨트롤(Use Controls)

  : 사용자 정의 컨트롤은 웹 페이지 내에서 공통적으로 사용되는 부분을 하나의 모듈로 만들어서 사용할 수 있도록 해주는 컨트롤을 말하며 사용자 정의 컨트롤로 사용되는 파일의 확장자는 .ascx이다.
   사용자 정의 컨트롤은 다음과 같이 새 항목 추가 대화상자에서 '웹 사용자 정의 컨트롤' 템플릿을 선택하여 쉽게 생성할 수 있다. ASP.NET 2.0에서는 이러한 영역들의 일관성 있는 구현을 위해 마스터 페이지라는 새로운 형식의 페이지를 제공한다.


Default.aspx
    Navigator.ascx : 상위 메뉴
    Category.ascx : 하부 메뉴
    Catalog.ascx : 상품 진열
    Copylight.ascx : 회사 소개

About.aspx




Default.aspx

 

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<%@ Register src="Navigator.ascx" tagname="Navigator" tagprefix="uc1" %>

<%@ Register src="Category.ascx" tagname="Category" tagprefix="uc2" %>

<%@ Register src="Catalog.ascx" tagname="Catalog" tagprefix="uc3" %>

<%@ Register src="Copylight.ascx" tagname="Copylight" tagprefix="uc4" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <table border="1" width="100%">

            <tr>

                <td colspan="2">

                    <uc1:Navigator ID="Navigator1" runat="server" />

                </td>

            </tr>

            <tr>

                <td style="width:185px;height:300px;">

                    <uc2:Category ID="Category1" runat="server" />

                </td>

                <td>

                    <uc3:Catalog ID="Catalog1" runat="server" />

                </td>

            </tr>

            <tr>

                <td colspan="2">

                    <uc4:Copylight ID="Copylight1" runat="server" />

                </td>

            </tr>

        </table>

    </div>

    </form>

</body>

</html>

 

 

Navigator.ascx

 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Navigator.ascx.cs" Inherits="Navigator" %>

<div>

    <a href="Default.aspx">Home</a> | <a href="About.aspx">About</a>

</div>

 

 

Category.ascx

 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Category.ascx.cs" Inherits="Category" %>

<div>

    <h3>카테고리</h3>

    <ul>

        <li>C#</li>

        <li>ASP.NET</li>

        <li>Silverlight</li>

    </ul>

    <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>

</div>

 

 

Catalog.ascx

 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Catalog.ascx.cs" Inherits="Catalog" %>

<div>

    <h1>여기는 메인 페이지</h1>

</div>

 

 

Copylight.ascx

 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Copylight.ascx.cs" Inherits="Copylight" %>

<div style="text-align:center;">

    Copyright&copy; All right reserved.

</div>

 

 

About.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="About.aspx.cs" Inherits="About" %>

 

<%@ Register src="Navigator.ascx" tagname="Navigator" tagprefix="uc1" %>

<%@ Register src="Category.ascx" tagname="Category" tagprefix="uc2" %>

<%@ Register src="Catalog.ascx" tagname="Catalog" tagprefix="uc3" %>

<%@ Register src="Copylight.ascx" tagname="Copylight" tagprefix="uc4" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <table border="1" width="100%">

            <tr>

                <td colspan="2">

                    <uc1:Navigator ID="Navigator1" runat="server" />

                </td>

            </tr>

            <tr>

                <td style="width:185px;height:300px;">

                    <uc2:Category ID="Category1" runat="server" />

                </td>

                <td>

                    <h3>여기는 소개 페이지 입니다.</h3>               

                </td>

            </tr>

            <tr>

                <td colspan="2">

                    <uc4:Copylight ID="Copylight1" runat="server" />

                </td>

            </tr>

        </table>

    </div>

    </form>

</body>

</html>










mek_part2.zip

'ASP.NET' 카테고리의 다른 글

3-2 마스터 페이지  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
1. 닷넷 프레임워크  (0) 2018.12.05
ASP.NET Index  (0) 2018.12.05
Posted by 딤스
, |

2-1. 웹폼

ASP.NET / 2018. 12. 5. 16:33
1. 웹 폼의 구성
 - 표현부분 (웹폼의 시각적인 부분을 담당) : 태그, 서버 컨트롤, 정적 텍스트와 같이 웹 폼을 시각적으로 나타낼 수 있는 요소가 위치한다.
 - 코드부분 (웹폼의 내부 로직 부분을 담당) : .NET 언어를 통해 작성한 내부 로직이 위치한다.

 <script runat="server">

   //내부로직

 </script>

                 코드 부분(logic)

 <html>

   <body>

    ...

   </body>

 </html>

                 표현 부분




2. 웹 폼 코드 모델
 - 단일 파일 페이지 모델 (Single-File Page Model)
    코드 부분과 표현 부분이 .aspx 파일(동일한 웹 폼)에 같이 존재하는 형태.
    코드와 태그를 한 곳에서 확인할 수 있으므로 쉽게 웹 폼을 분석할 수 있다.
    파일간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정할 수 있다.
    코드부분은 반드시<script runat="server"> </script> 태그 사이에 위치해야 한다 .

 - 코드 숨김 페이지 모델 (Code-Behind Page Model)
    표현 부분은 .aspx 파일, 코드 부분은 다른 클래스 파일(.cs 파일)에 놓여지는 형태.
    코드 부분과 표현 부분을 완전히 구분하기 때문에 개발자가 코드를 작성하는 동안  웹 디자이너는 태그로 디자인 작업을 진행할 수 있다.
    코드를 여러 페이지에 재사용할 수 있다.

 

<html>

   <body>

    ...

   </body>

  </html>

 

 

      .aspx 파일

 

 using System;

 using System.Data;

 ...

 public partial class Default_:Page

 {

     //내부 로직

 }

 

        .cs 파일



- Partial 클래스의 특징
  1. ASP.NET 2.0 코드 숨김 페이지 모델에서는 C#2.0에 추가된 partial 형식이라는 새로운 언어기능을 사용하여  1.x에서 가지고 있던 상속의 복잡성, 컴파일의 복잡성 문제를 한번에 해결했다.
  2. partial 형식은 클래스(또는 구조체, 인터페이스)를 두 개 이상의 소스 파일로 분할할 수 있는 기능을 말한다.
  3. partial 클래스로 분할된 여러 클래스는 컴파일 시 컴파일러에 의해 합쳐진다. 
  4. ASP.NET 2.0의 코드 숨김파일(.cs 파일)은 partial 클래스로 정의된다.
  5. parrtial 클래스로 만들어진 코드 숨김 파일에는 웹 폼으로 사용된 서버 컨트롤에 대한 변수와 이벤트 바인딩 관련 구문을 추가할 필요가 없으며 서버 컨트롤 변수와 이벤트 바인딩 관련 구문은 런타임에 컴파일러에서 모두 처리해 준다. (cf. 1.x 에서는 다 작성해줘야 함)
     결과적으로 코드 숨김 파일에는 개발자가 생각하는 논리만 깔끔하게 작성하면 된다.

  ※ 코드 숨김 페이지 모델을 지원하지 않는 .NET 언어 : J#과 같이 partial 클래스를 지원하지 않는 .NET 언어를  사용하면 코드 숨김 페이지 모델의 웹 폼을 만들 수 없다.


 

3. 웹 폼 이벤트

아래와 같은 형태로 사용. (sender : 이벤트가 발생한 개체를 나타내는 개체, e : 이벤트 관련 정보를 포함하는 이벤트 개체)

 Protected void Page_Load(object sender, EventArgs e)
 {

 }

- 웹 폼 이벤트 발행 순서
  Init 이벤트 -> LoadView State 이벤트 (서버 컨트롤 정보) -> Load 이벤트 -> 서버 컨트롤 이벤트 -> PreRender 이벤트 -> SaveView State 이벤트 -> Unload 이벤트

 * Init, Load, PreRender 가장 많이 사용되는 이벤트


4. 다시 게시(Postback)과 페이지 간 게시(Cross-Page Posting)
 - 다시 게시 (Postback)이란 default.aspx란 페이지가 웹 서버에게 다시 default.aspx란 페이지를 요청하는 프로세스.









추가 예제(발생할 수 있는 문제) : http://beomsik.com/30061542930



- 페이지 간 게시 (Cross-Page Posting)
 자신이 아닌 다른  대상 페이지로 현재 페이지를 서버로 전송하는 프로세스.









'ASP.NET' 카테고리의 다른 글

3-2 마스터 페이지  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
1. 닷넷 프레임워크  (0) 2018.12.05
ASP.NET Index  (0) 2018.12.05
Posted by 딤스
, |

1. 닷넷 프레임워크

ASP.NET / 2018. 12. 5. 16:32
1. 닷넷 특징
 - 플랫폼 독립성 : 닷넷 프레임웍
 - 다양한 언어 지원 : CLS (Common Language Specification) 
 - 상호 운용성 : 닷넷, COM, WIN32 API 사이 호환성

2. 닷넷 프레임워크 구성도 와 구성요소


<닷넷 프레임워크 구성도>




<2-1. 닷넷 프레임워크 클래스 라이브러리>




<2-2. 공용 언어 런타임(CLR) 구성>


 - 공용 언어 런타임 CLR (Common Language Runtime)은 여러 언어를 사용할 수 있게 해주는 기술로서 닷넷 형식을 관리하는 역할을 함. (예를들면, 메모리관리, 보안 관리, 오류 처리 등의 작업을 도와주어 프로그래밍을 단순화하는 역할을 해주고, 개발된 응용 프로그램의 실행 환경도 제공해준다.)




<2-3. 공용 언어 런타임(CLR)의 역할>



- 마이크로소프트 중간 언어 MSIL (MicroSoft Intermediate Language) : 닷넷 언어로 작성된 소스는 MSIL을 통해 컴파일 되어 사용됨.
다양한 언어를 사용할 수 있고, MSIL를 통한 exe, dll 등으로 보관되어진 후, 실행될 운영체제에서 JIT (Just-In-Time) 컴파일러를 통해 활용되어 사용되어짐.


Ex)
컴파일 단계 : C# -> C#컴파일러 -> exe or dll (MSIL 실행파일)
실행 단계 : Base Class Library -> Class Loader -> MISL to Native Code Compilers -> 원시코드 (Native Code) -> 실행

  
 

- 기본 클래스 라이브러리 BCL : 모든 닷넷 기반 애플리케이션과 컴포넌트에서 공통으로 자주 사용하는 System, System.Collections, System.Diagnostics 등과 같은 네임스페이스를 포함하고 있습니다. 또한 네트워크 연결, 프로토콜 구현, 파일과 스트림 입출력 클래스, 멀티스레딩, 텍스트 처리, 정규 표현식(Regular Expression) 그리고 리플렉션(Reflection) 등의 기능도 함께 포함하고 있습니다.

'ASP.NET' 카테고리의 다른 글

3-2 마스터 페이지  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
ASP.NET Index  (0) 2018.12.05
Posted by 딤스
, |

ASP.NET Index

ASP.NET / 2018. 12. 5. 16:29
1. ASP.NET 프레임워크

2. 웹폼 , 표준컨트롤 , 서버컨트롤

3. 테마 / 마스터 페이지

4. 데이터베이스 연동 및 데이터 바인딩 컨트롤

5. 유효성 검사

6. 디버깅

7. 웹사용자 정의 컨트롤

8. 내장객체

9. 인증처리 방식

10. 파일 처리

11. 웹파트

12. 기본게시판

13. 회원가입

14. 성능향상 Tip

15. LINQ

16. XML 연동

'ASP.NET' 카테고리의 다른 글

3-2 마스터 페이지  (0) 2018.12.05
3-1. 테마  (0) 2018.12.05
2-2. 표준컨트롤, 서버컨트롤  (0) 2018.12.05
2-1. 웹폼  (0) 2018.12.05
1. 닷넷 프레임워크  (0) 2018.12.05
Posted by 딤스
, |

최근에 달린 댓글

글 보관함