2013년 10월 24일 목요일

 [닷넷교육,ASP.NET 강좌]C# ASP.Net으로 만든 HelloWorld(hello.aspx)


[닷넷교육,ASP.NET 강좌]C# ASP.Net으로 만든 HelloWorld(hello.aspx)  

<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat="server">
 void Button1_Click(object sender, System.EventArgs e) {
  label1.Text = textBox1.Text + "님 환영<br>";
 }
</script>
<html>
<head></head>
<body>
    <form id="form1" runat="server" mathod="post">
        <asp:Label ID="label1" runat="server">이I름А?</asp:Label>  
        <asp:textbox ID="textbox1" runat="server" />
        <asp:Button ID="button1" onClick="Button1_Click" runat="server" Text="Click me!"/>
    </form>
</body>
</html>
 
[해석]

<%@ page language=“C#” %>

 Page 지시자 이며 반드시 <%@ page로 시작
<script runat="server">
 void Button1_Click(object sender, System.EventArgs e) {
  label1.Text = textBox1.Text + "님 환영<br>";
 }
 </script>
 서버 측 스크립트이며 서버에서 처리될 스크립트인 경우 반드시 runat=“server”라고 표기 해야 한다. 이 부분의 코드는 실행 시에만 인식되는 코드이며 클라이언트 측 결과물에는 이러한 코드는 나타나지 않는다. (사용자는 볼 수 없다.) 
<form runat=“server”>
 form 태그에 runat=“server”가 있다는 것은 이 폼은  흔히 말하는 웹 폼 이라는 것이다. 웹 폼은 ASP.NET에서 제공하는 서버 컨트롤을 포함 할 수 있으며 그것들을 제어 할 수 있는 서버 측의 논리적인 구역을 의미한다. 모든 서버 컨트롤은 반드시 웹 포 구역 안에 와야 한다.(<form>과</form> 사이), 하나의 ASP.NET 페이지 안에는 하나의 웹 폼이 올 수 있다.
 
<asp:Label id=“label1" runat="server"> Name: </asp:Label>
 
 Label 컨트롤은 단지 문자열의 값을 출력하는 역할을 담당하는 단순한 기능의 컨트롤 이다.이 컨트롤은 서버 컨트롤 이기에 반드시 runat=“server” 설정을 해야 한다. 그리고 프로그래밍적으로 이 컨트롤의 여러 속성에 접근 해야 하므로 반드시 고유한 ID를 가져야 하므로 필히 id를 부여 해야 한다. <asp:Label> 컨트롤 이지만 컴파일 되고 실행되어 출력 결과물이 만들어 질 때는 html의 <span> 태그로 바뀌게 된다. <span id="Label1">홍길동님 환영 합니다</span>

 이러한 서버 컨트롤은 서버 측 개발자에게만 의미가 있고 클라이언트에게는 의미가 없는 컨트롤 이다. 이러한 사실에 근거하면 클라이언트는 원래의 aspx 소스를 알아 내거나 살펴 볼 수 있는 방법이 전혀 없다는 것이다. 즉 결과가 서버 컨트롤을 쓴 건지 원래 <span> 태그 였는 지는 모른다는 의미다.
 

<asp:Button id="Button1" onClick="Button1_Click" runat="server" Text="확인"/>  

 다음은 버튼 컨트롤 이다. Label과 마찬가지로 runat=“server”를 지정해야 하며 id 값도 부여 해야 한다. 그리고 Text 속성의 값도 가지고 있다. 또한 OnClick 이벤트를 처리항 Method도 정의 하고 있다. 이것이 바로 서버 컨트롤에서의 이벤트 지정 이다. 사용자의 웹브라우저에서 버튼이 눌러 졌을때 지정된 메소드 이름과 같은 메소드를 서버 측에서 찾아 그 함수를 수행 하는 것이다.(정확히 말하면 버튼을 클릭시 일단 폼을 서브밋 하고 서버 측에서 해당 버튼의 클릭 이벤트가 수행 되는 것이다.) 특히 함수 명의 대소문자 구별은 중요 하다. C# 언어는 대.소문자를 구분 하는 언어 이다.
 Button 컨트롤도 aspx 상에서는 <asp:Button~> 이지만 컴파일 되어 실행되면 클라이언트에서 확인 할 때는 다음과 같이 바뀌게 된다.

 <input type="submit" name="Button1" value="Click me!" id="Button1" />

최초 실행 후 브라우저에서 소스보기를 하면 <input type="hidden" name="__VIEWSTATE" value=“ssDwxNTgXXXEzNzFOzs+gryesRQ0yJFHTVVDiw819etd=" /> 와 같은 hidden 값이 하나 보일 것이다.

 이것의 이름은 _VIEWSTATE이고 알아보기 힘든 값으로 채워져 있다. 이 컨트롤은 서버측에서 필요 한 정보를 base64 방식으로 인코딩 하여 내부적으로 숨겨 두기 위하여 사용하는 컨트롤 인데 주로 컨트롤들의 상태를 유지하기 위한 방법으로 사용 된다. 이렇게 하면 POSTBACK을 하더라도 컨트롤내의 값들이 사라 지지 않고 유지 될 수 있다.
 
 최초 상태에서 이름을 입력 하고 서브밋을 한 후 소스보기를 하면 위의 내용과 다르게 나타 날것이다. <input type="hidden" name="__VIEWSTATE" value="dXXXXXXXXXXXXXXXXXXX" />




댓글 없음:

댓글 쓰기