login register Sysop! about ME  
qrcode
    최초 작성일 :    2002년 08월 15일
  최종 수정일 :    2002년 08월 16일
  작성자 :    taeyo
  편집자 :    Taeyo (김 태영)
  읽음수 :    82,273

강좌 목록으로 돌아가기

필자의 잡담~

정말로 간만에 올리는 강좌가 아닌가 합니다. "태오~ 너도 이제 많이 게을러졌구나. 배가 좀 부른가 보지?" 라고 말씀하신대도 드릴 말씀은 없을 정도로 죄송합니다. 하지만, 여러가지 많은 일들이 있었고, 정체성에 대한 고민과... 약간의 우울증으로 인해 그동안 강좌를 쓸 수가 없었습니다.

딜렘마라고 하죠?

자. 이제 .NET 솔루션을 위한 뛰어난 RAD(Rapid Application Development) 도구인 VS.NET으로같은 예제를 한번 만들어 보자. 언제까지 이러한 기초 예제만 하고 있을 것인가? 라고 약간의 불평을 할 수도 있겠지만, 이번 단계까지가 기초적인 준비의 전부이다. VS.NET을 통해서 예제를 실습하고 나면 그 이후로는 지겹도록 많은 예제들을 같이 해나가게 될 것이다. 누누이 강조하지만 기본은 중요하다. 지금 여러분이 할애하는 시간은 이후 여러분이 .NET 솔루션을 개발할 때에 많은 시간을 절약하게 해 줄 것이다. 기초가 튼튼한 건물이 오래도록 튼튼하다는 것을 상기하도록 하자.

자. 이제 Visual Studio .NET (이하 VS.NET) 을 통해서 이전에 만들어 본 예제와 똑같은 예제를 한번 만들어 보도록 하자. 그리고, 그 위에 약간의 추가적인 테스트도 해보도록 하자.

먼저, VS.NET 을 열고 [시작 페이지]에서 [새 프로젝트] 버튼을 눌러 새로운 프로젝트를 선택하자. 그러면 다음과 같은 [새 프로젝트] 창이 나올 것이다. 여기서 왼쪽 “프로젝트 형식”에서는 “Visual C# 프로젝트”를 선택하고, 오른쪽 템플릿에서는 “ASP.NET 웹 응용 프로그램”을 선택하자. 그리고, 밑의 “위치(L)” 란 에는 “http://localhost/TaeyoAspNet” 라고 기입하여 새롭게 TaeyoAspNet 이라는 가상 ASP.NET 웹 어플리케이션을 여러분의 웹 서버에 생성하도록 하자.

그러면, 새롭게 TaeyoAspNet 이라는 가상 디렉터리(엄밀하게는 가상 웹 어플리케이션)이 가 만들어 지게 되고, 여러분은 VS.NET은 다음과 같은 모습을 띄게 될 것이다.

우측의 [솔루션 탐색기]를 보면 몇몇 파일들이 자동적으로 생성되어 있는 것을 볼 수 있다. 각각의 파일들에 대해서는 천천히 알아보기로 하고, 우선적으로 포커스가 놓여있는 WebForm1.aspx 에 대해서 알아보자. 이 페이지는 VS.NET이 기본적으로 생성해 준 하나의 웹 폼 페이지이다. 엄밀하게는 ASP.NET 페이지이다.

그리고, 좌측을 보면, [도구 상자]란 것이 눈에 띌 것이다. 그 위에 마우스를 올려놓으면 다음 그림처럼 말 그대로 도구 상자가 나타날 것이다. 이 도구상자에 들어있는 것은 웹 폼에서 사용할 수 있는 여러 종류의 서버 컨트롤들이며, 사용하고자 하는 컨트롤을 드래그 앤 드롭하여 웹 폼 위에 올려놓으면 그것으로 컨트롤은 폼에 자동적으로 삽입된다.

그렇다고, 위처럼 TextBox를 드래그 앤 그롭으로 추가하라는 의미는 아니다. 우리는 하나의 Label 과 하나의 Button을 추가하도록 할 것이다.

컨트롤을 추가하기 전에 먼저, 웹 폼에 마우스를 우측 클릭하고 [속성] 창을 띄워보도록 하자.

그러면, 다음과 같이 [DOCUMENT 속성 페이지] 창이 뜰 텐데, 각각의 설정들은 이름만으로도 페이지의 어떠한 설정을 할 수 있는 것인지 금새 파악할 수 있으며, 궁금한 것은 직접 여러분이 그 값을 변경해 보면, 결과를 확인할 수 있다. 대부분의 것들은 기본 세팅 그대로 사용하게 될 것인데, “페이지 레이아웃” 이라는 부분은 “FlowLayout” 으로 바꿀 필요가 있다.

페이지의 레이아웃은 페이지에 컨트롤 배치를 어떠한 식으로 할 것인지를 지정하는 부분이다. VS.NET이 제공하는 GridLayout 을 사용하면, 여러분이 마우스를 통해서 자유자재로 컨트롤의 위치를 지정할 수 있다. 하지만, 그렇게 지정할 경우 눈에 보이기에는 좋지만, 실제 구성되는 HTML 소스는 수많은 DHTML로 인해 쉽게 파악이 안될 정도로 복잡해 진다. 또한, 그렇게 구성한 페이지는 차후 웹 디자이너가 페이지에 디자인을 붙일 경우, 매우 혼란스러울 수 있다.

해서, 필자는 FlowLayout으로 놓고 개발하기를 추천하는 바이다. FlowLayout 모드로 페이지를 설정하면, 이는 이전 HTML과 같은 형태의 레이아웃이 된다. 즉, 컨트롤들을 원하는 위치에 배치하려면 일일이 HTML 을 사용하여 배치해야 한다는 이야기이다. 물론, 페이지가 단지 샘플용이고, 따로 별다른 디자인이 요구되지 않을 경우는 GridLayout이 편리성을 제공할 수는 있다. 하지만, 대부분의 경우 개발 상의 편리함과 적은 HTML의 사용을 위해서 여러분은 FlowLayout을 사용하게 될 것이다. 이 책에서는 이후 별 다른 이야기가 없으면, 페이지의 레이아웃으로 FlowLayout을 사용하겠다. 여러분은 새로운 ASP.NET 페이지 생성시 제일 먼저 페이지 레이아웃을 FlowLayout으로 설정하기 바란다.

이제, 폼 위에 하나의 Label 컨트롤을 올려보자. 도구 상자에서 Web Forms 구역 안에 들어있는 Label 컨트롤을 드래그 앤 드롭으로 폼 위에 올려놓으면 된다.

레이블 컨트롤을 올려놨으면 그 컨트롤을 마우스로 선택한 상태에서(컨트롤이 선택되면 위처럼 컨트롤 주위가 네모로 둘러진다) [속성 창]으로 간다. [속성 창]에서 이 컨트롤의 id를 다음 그림과 같이 lblMsg 로 지정하고, Text 속성의 값을 지워서 빈 공백으로 만들도록 한다.

다 되었으면 이제 폼 위에 Button 컨트롤도 하나 추가로 올려놓는다. 그리고, [속성 창]에서 그 버튼의 id를 btnSubmit 라고 설정하고, Text를 “Click!!!” 이라고 설정한다. 다음 그림을 참고하도록 한다

다 되었으면 이 페이지의 HTML 을 확인해 보도록 한다. 웹 폼에 마우스 우측 클릭을 하고, [HTML소스 보기]를 선택하던가 아니면 웹 폼의 밑 쪽에 있는 HTML 이라는 버튼을 클릭하여 HTML 소스를 볼 수 있다.

대략 다음과 같은 HTML 이 생성되어 있을 것이다.

여기에는 에디터가 자동으로 만들어 준 쓸모가 없는 태그들이 조금 들어있다. 태그들을 정리해서 다음처럼 소스를 바꾸어 보자(META 태그들만을 정리하였다). 물론, 반드시 그래야 할 이유는 없지만 말이다.

다 되었으면 소스를 살펴보자. HTML 부분은 기존의 코드 비하인드를 적용했던 Start2.aspx 소스와 큰 차이가 없다. 차이가 있는 부분이라면 서버 사이드 스크립트가 사라졌다는 것과, @Page 지시자에 몇몇 속성이 추가되었다는 것이다. 결론적부터 이야기하면, 이는 페이지가 Code-Behind(코드 비하인드)로서 구성 되었다는 것을 의미한다. 이미 느끼고 있었다? 그렇다. VS.NET은 이렇게 기본적으로 코드 비하인드로 페이지를 구성해 준다.

그렇다면, 추가된 @Page 지시자 쪽을 살펴보도록 하자.

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TaeyoBook.WebForm1" %>

새롭게 추가된 속성은 Codebehind, AutoEventWireup, 그리고 Inherits 이다. Codebehind 속성은 현재의 컨텐트 페이지의 프로그래밍 코드 페이지에 해당하는 코드 비하인드 페이지를 지정하는 속성이다. 이전 우리가 수작업을 통해서 코드 비하인드를 구성했을 경우에는 Src 라는 속성을 사용했었지만, VS.NET은 Codebehind 라는 속성을 사용한다. Codebehind 라는 속성은 VS.NET 에서만 사용되는 것으로, .NET 프레임워크는 이 속성을 고려하지 않는다는 것을 기억하자. (여러분이 VS.NET으로 컴파일을 하지 않을 경우는 CodeBehind 대신 Src 속성을 사용해야 할 것이다)

VS.NET은 페이지 생성시 기본적으로 페이지 명 뒤로 cs라는 확장자를 붙인 WebForm.aspx.cs 와 같은 C# 페이지(코드 비하인드 클래스 페이지)를 생성해 주고, 연결해 준다. 이러한 코드 비하인드 페이지는 System.Web.UI.Page 라는 클래스로부터 상속 받은 하나의 C# 클래스로 구성된다. 그 클래스의 이름은 기본적으로 aspx 파일의 파일명을 사용하게 되는데, 우리의 경우 그 클래스 이름은 WebForm1이 된다.

이미 이전 코드 비하인드 Part 에서 다루었던 이야기이다. Src가 Codebehind 로 대체되었다는 것만을 제외하면 모두 알고 있는 이야기일 것이다. 단지, AutoEventWireup 라는 것을 제외하면 말이다.

AutoEventWireup 이라는 속성은 페이지의 이벤트가 자동으로 연결되는지 여부를 나타내는 것으로, 이벤트의 자동 연결이 설정할 것이면 true 를 그렇지 않으면 false 를 지정한다. 이 값을 지정하지 않을 경우는 자동으로 true 가 지정되는 데, 그럴 경우 페이지 내에서 발생하는 이벤트들은 모두 UI 페이지에서 OnClick=”btnSubmit_OnClick” 와 같이 이벤트 핸들러에 지정한 것만으로 처리가 이루어진다. 하지만, 코드 비하인드 페이지가 UI 페이지와 어떠한 이벤트를 주고 받을 경우(거의 모든 경우를 의미한다)에는 사실상 코드 비하인드 페이지 내에서 그 이벤트를 코드로써 등록 해 주는 추가적인 작업이 필요하다. 마치, 비하인드 페이지에서 UI 페이지의 개체를 접근하기 위해서 개체의 변수를 선언해 주었던 것처럼 말이다.

정리하자면, AutoEventWireup을 fasle 로 지정할 경우는 여러분이 코드 비하인드 페이지에 추가적인 이벤트 연결 코드를 작성해 주어야 하는 것이고, true로 지정할 경우는 어떠한 추가적인 코드도 필요하지 않음을 의미한다. 대부분 수작업으로 코드 비하인드를 구성할 경우는 일반적으로 true 인 기본값을 그대로 사용하지만(즉, 아예 이 속성을 코딩하지 않지만), VS.NET은 명시적으로 이것을 false 로 지정한 다음, 그러한 이벤트 연결 코드를 자체적으로 제공해 준다.

결국, VS.NET을 사용할 경우 이러한 AutoEventWireup=”false” 가 지정되어 있다고 하더라도 그로 인해 필요한 모든 작업을 VS.NET이 모두 처리해 주기에 우리는 내버려두고 우리가 해야 할 작업만 하면 된다는 이야기이다. VS.NET이 자동으로 생성해 주는 연결코드들은 곧 만나보게 될 것이다.

결론적으로 이야기하면 허망하게도 이 속성에 대해서는 우리가 전혀 신경을 쓰지 않아도 된다는 것이다. 사실 내부적으로 함수 접근 허용에 대한 이야기가 있기는 하지만, 우리가 VS.NET을 사용하는 한 모든 기본 처리는 VS.NET이 도맡아 해주기에 걱정할 것은 없다. 차후에 다시 이야기 해보도록 하자.

좋다. 결국 @Page 지시자 구역에 있는 속성들은 사실상 우리가 수작업을 했던 내용과 별반 차이가 없다. 이번에는 비하인드 코드 쪽을 한번 살펴보도록 하자.

[솔루션 탐색기] 에서 WebForm1.aspx 파일을 마우스 우측 클릭한 다음 그림과 같이 [코드 보기(C)]를 선택하자.

그러면, 코드 비하인드 파일의 소스가 다음처럼 보여질 것이다.

의외로 많은 코드가 존재하고 있지만, 자세히 살펴보면 이전에 우리가 수작업으로 구성했던 비하인드 파일과 크게 다를 바가 없다.

몇몇 네임스페이스들이 using 키워드를 통해서 첨부가 되어 있다는 점과, 클래스 구역을 namespace TaeyoAspNet 이라는 것이 둘러싸고 있다는 점, 그리고, Page_Load 라는 이벤트 함수가 추가되어져 있다는 점이 사실상 차이의 전부이다.

하나씩 살펴보자. 소스에는 자그마치 10개의 네임스페이스가 추가되어 있다. 이것은 VS.NET이 ASP.NET 에서 자주 사용되는 네임스페이스들을 미리 추가해 놓은 것이다. 각각의 네임스페이스를 통해서 어떠한 클래스들을 사용할 수 있는 지는 여러분이 수많은 예제와 실습을 통해 배워나가야 할 것이다. 하지만, 우리의 이번 예제에서는 이렇게 많은 네임스페이스는 필요치 않다. 물론, 네임스페이스들의 추가가 소스의 성능상의 어떠한 불이익을 주지는 않지만 코드를 보이게 그다지 좋다고 볼 수는 없다. 필요한 네임스페이스만 추가하는 것이 바람직한 것이다.

참고 : 불필요한 네임스페이스의 사용은 서버의 부하를 유발할 수 있는가?

네임 스페이스(namespace) 를 이유없이 마구 첨부하는 것이 어떠한 오버헤드(부하:overhead)를 유발할 것으로 생각할 수도 있지만, 사실 그렇지는 않다. 이러한 네임 스페이스의 첨부는 접근에 대한 참조를 알리는 기능만을 가지고 있기 때문이다. 그렇다손 치더라도, 소스의 관리성 및 가독성을 위해서 불 필요한 네임 스페이스는 추가하지 않는 것이 바람직하다는 데는 그 누구도 이의를 제기하지 않을 것이다.

고로, 우리는 다음 네임스페이스를 제외한 다른 것들은 모두 지우도록 하겠다.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;

그 다음으로 나오는 코드는 namespace TaeyoAspNet 이라는 부분이다. 사실상 반드시 필요한 부분은 아니지만, VS.NET은 이렇게 하나의 웹 어플리케이션을 어플리케이션의 명을 사용하여 하나의 네임스페이스로 묶어준다. 여러분이 이제부터 만들어 나가는 모든 비하인드 클래스, .NET 컴포넌트들은 이러한 네임스페이스 공간에 묶이게 될 것이며, 그렇게 하는 것이 클래스의 관리 차원에서 바람직하다고 볼 수 있다.

만일, 여러분이 이러한 네임스페이스를 구성하지 않은 상태에서, 웹 어플리케이션을 구축하고 있으며, MainClass 클래스를 만들어서 자주 사용하고 있다고 가정하자. 그러한 상태에서 다른 업체가 이 어플리케이션에 몇몇 모듈을 추가적으로 붙였다고 가정하자. 그리고, 우연히도 그 업체가 자체적으로 사용하고 있던 클래스의 이름도 MainClass 라고 해 보자. 이런 경우에는 다른 업체가 웹 어플리케이션에 그들의 모듈을 붙인 그 이후로 어플리케이션이 오동작하거나, 에러를 발생시킬 수 있다. 같은 클래스가 2개가 존재하기에 문제가 발생하는 것이다.

해서, 네임스페이스의 지정은 이러한 발생할 수 있는 여러 문제는 미연에 방지해주는 역할을 담당하기에, VS.NET은 이렇게 기본적으로 웹 어플리케이션과 같은 이름의 네임스페이스 공간에 모든 클래스들을 묶는 식으로 구성하는 것이다. 이후에 다른 aspx 파일을 추가해 보면 알겠지만, 모든 비하인드 클래스들은 같은 이름의 네임스페이스로 묶인다.

굳이 이해가 되지 않으면 지금의 부분은 이해하지 않고 넘어가도 좋다. 중, 소규모의 웹 어플리케이션의 경우 이러한 이유로 문제가 발생할 확률은 그리 높지 않을 것이니 말이다. 지금은 그냥 “그렇구나~” 라고 인식하고 넘어가도 좋다. 시간이 여러분을 이해시켜줄 것이다.

그리고, 이제 이야기 할 부분은 새로이 추가가 되어 있는 Page_Load 라는 함수에 대해서 이다.

private void Page_Load(object sender, System.EventArgs e)
{
    // 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.
}

라는 코드가 자동으로 생성되어 있는 것을 볼 수 있을 것이다. 이 코드는 무엇인가? 이 코드는 페이지 자체에서 제공하는 기본적인 함수이다. 함수의 이름은 Page_Load 라고 나타나있어 이 함수가 수행되는 시기가 페이지가 로딩되는 시점임을 알 수 있게 한다. 그리고, 주어지는 인자는 우리가 2장에서 이미 만나보았던 기본적인 2개의 인자가 제공되고 있다.

이 이벤트 함수는 여러분이 페이지가 로딩되는 시점에 처리하고 싶은 작업을 수행할 수 있도록 해주는 역할을 담당하는데, 주로 페이지의 초기화 작업을 하는 역할로써 사용된다. 예를 들면, 페이지가 로딩되는 그 당시의 현재 시간을 표시하고 싶다면, 이 함수에서 시간을 얻어와 표시하면 된다. 예를 들면 다음처럼 말이다.

private void Page_Load(object sender, System.EventArgs e)
{
    lblMsg.Text = DateTime.Now.ToString();
}

일단, 눈에 보이는 차이는 이 정도인 듯 하다. 하지만, 눈에 보이지 않는 숨겨진 코드들도 존재하고 있다. 이 부분은 대략적으로 알아보도록 하자. 현재 여러분들이 이들을 모두 이해하기에는 사실상 조금은 버거우며, 이들을 이해하지 않아도 프로그래밍하는 데에는 아무런 문제가 없기 때문이다.

자. 그러면 숨겨진 부분은 어디인가? 코드 중에 보면 다음과 같이 표시되어 있는 한 줄의 라인이 보일 것이다.

참고 : 필자의 VS.NET 에서는 코드에 라인 번호가 나오고 있는데, 내 것은 그렇지 않다.

여러분도 코드의 앞쪽에 라인 번호를 나오게 하고 싶은가? 그렇다면, 다음처럼 해보기 바란다.① VS.NET 메뉴에서 [도구(T)] [옵션(O)]를 차례로 선택하여 [옵션] 창을 띄운다.② 다음 그림과 같이 왼쪽 목록에서 [텍스트 편집기] [C#] [일반]으로 가서 우측의 옵션 중 “줄 번호”를 체크한다.

그 라인의 앞 부분(+ 모양)을 클릭하여 소스를 확장해 보도록 하자. 그러면 다음과 같은 이해하기 쉽지 않은 코드들이 나올 것이다.

이 코드들은 VS.NET 디자이너에 의해 자동으로 생성되는 부분으로, 주로 개발자가 웹 폼의 컨트롤들에 대해 어떠한 설정을 한 부분이나, 개발자가 추가한 이벤트의 연결 코드 등등이 자동으로 삽입되는 구간이다. 이 부분을 직접적으로 건드릴 일은 많지 않은 편이다. 일단은 이러한 구역에 의해 내부적으로 소스를 VS.NET이 일부 관리하고 있다고 알아두자. 일단, 살펴보았으면 이 구역은 다시 숨겨두자. 코드 중에 다음 부분의 앞 쪽 (-) 부분을 클릭하면 코드는 다시 접히면서 숨겨질 것이다.

#region Web Form Designer generated code

자. 이제 필요한 부분은 대략적으로 모두 알아보았다. 이제, 버튼을 클릭하였을 경우에 Label 컨트롤에 특정 텍스트가 쓰여질 수 있도록 이벤트를 추가해 보자. [솔루션 탐색기]에서 WebForm1.aspx 라는 파일을 더블 클릭하여 웹 폼으로 돌아오자. 그리고, 화면에 보이는 버튼을 더블 클릭해 보자.

그러면 갑자기 화면이 다시 코드 모드로 돌아오면서 btnSubmit_Click 라는 함수가 추가되어 있을 것이다. 호오. 자동으로 VS.NET이 이러한 코드를 만들어 준다.

그렇다면, 여러분은 이제 해야 할 일을 알고 있을 것이다. 그렇다. 추가된 함수 내부에 다음과 같은 코드를 추가하자.

lblMsg.Text = "Hello!! ASP.NET";

그리고, Page_Load 함수 구역 내에는 다음과 같은 코드를 추가하자.

lblMsg.Text = "현재시간 : " + DateTime.Now.ToString();

모두 작성된 코드는 다음 그림과 같을 것이다

좋다. 예제를 완성하였다. 이제 이 예제를 실행시켜 보자. [솔루션 탐색기] 에서 WebForm1.aspx 에 마우스 우측 클릭을 하고 [빌드 및 찾아보기] 를 클릭한다. 이는 비하인드 클래스 파일을 컴파일 하고, 어셈블리 캐쉬에 올린 뒤, 페이지의 실행까지 한번에 하게 하는 명령이다.

실행 시 브라우저가 뜨고, 약간의 빌드 시간이 소요된 뒤에 다음과 같은 결과화면을 볼 수 있을 것이다. 페이지의 로드 시에 Page_Load 이벤트 함수가 실행되기에 Label 에는 현재의 날짜와 시각이 표시되는 것을 볼 수 있다.

이제 버튼을 클릭한다. 버튼을 클릭하면 서버로 폼은 전송되고, 발생한 이벤트(btnSubmit_Click)가 동작하여 다음과 같은 결과화면을 볼 수 있을 것이다.

주의해야 할 것은 버튼을 클릭했을 경우에도, Page_Load 이벤트 함수는 동작한다는 것이다. 잘 이해가 안 된다면 같이 한번 생각해 보자. 버튼이 클릭될 경우, 어떠한 일이 서버에서 일어나게 되는가?

버튼이 클릭되면, 버튼이 클릭되었다는 정보를 가지고, 폼은 서버로 전송(서브밋)된다. 서버에서는 새롭게 페이지를 로드하기 시작할 것이고, 그 경우, Page_Load 이벤트 함수는 동작하게 된다. Page_Load 이벤트 함수의 처리가 끝난 다음에는, 클라이언트에서 발생시킨 함수가 존재하는지 체크를 해서 그러한 함수가 있다면, 그 때 함수(btnSubmit_Click)를 처리하는 것이다. 이미 ASP.NET의 실행구조를 알고 있는 여러분이라면 쉽게 이해할 수 있을 것이다.

고로, 버튼 클릭 시 위와 같은 결과를 보게 되기는 하지만, 실질적으로는 먼저 Label 에 현재의 날짜가 지정되었다가, 다시금 “Hello!! ASP.NET” 이라는 문자열로 덮어 씌워져 렌더링 되는 것이다. 그리고, 사용자는 결과를 받아보게 되는 것이다.

자꾸 렌더링이라는 단어가 나오는데, 렌더링이란 무엇인가?

렌더링(rendering) 이란 3차원 그림을 2차원적으로 표현할 경우, 그림에 그림자나 질감 같은 것을 주어 입체감 있게 표시하는 방법을 나타낸다. 우리는 2차원적인 모니터를 통해서 3차원적인 윈도우나 이미지들을 보고 있다는 사실을 기억하라.

좋다. 아주 잘 동작하였고, VS.NET 을 이용한 ASP.NET 페이지의 제작도 무리 없이 수행하였다. 앞으로의 예제에서는 이러한 부분들을 깊게 설명하지 않고, ASP.NET의 기능을 중심적으로 다룰 예정이기에 지금까지의 조금은 지루한 과정들이 더욱 값지게 느껴질 것이다.

예제를 마무리하기 전에 소스 중에서 설명을 끝내지 못한 부분을 이야기하려 한다. 그 부분은 Page_Load 이벤트 함수 내에 코딩 하였던 다음 부분의 코드이다.

lblMsg.Text = "현재시간 : " + DateTime.Now.ToString();

이것은 lblMsg 의 Text 로 특정 문자열을 지정하고 있는 부분인 것은 이미 아는 사실이다. 요는 그 뒤에 존재하는 문자열인데, 우선 + 라는 연산자는 C# 에서 문자열을 결합하거나, 덧셈의 연산을 수행하는 경우 사용되는 연산자이다. 이미 예측하고 있었을 것이다.

이 한 줄의 코드에서 중요한 부분은 바로 DateTime.Now.ToString() 이라는 부분이다. .NET 에서는 통합적으로 시간과 관계된 정보를 위해 DateTime 이라는 클래스를 제공하고 있다. DateTime 클래스는 날짜와 시간에 관계된 많은 속성들을 제공하고 있는데, 그중에 Now 라는 속성은 현재의 날짜와 시간을 구체적으로 포함하는 속성이다. 우리가 예제의 결과화면을 통해서 보았듯이 그러한 날짜와 시간을 결합한 문자열을 얻을 수 있게 되는 것이다.

그런데, 여기서 중요한 점은 DateTime.Now 라는 것은 Type 즉, 데이터 형식이 DateTime 이라는 것이다. .NET 에서는 형(Type)이 매우 강력해 졌다. DateTime 이라는 형식은 String 이 아닌 말 드래도 데이트 형식인 것이다. 고로, 이러한 타입은 문자열이 아니기에 + 라는 연산자를 통해서 “현재시간 : ” 이라는 문자열과 결합시킬 수가 없다. DateTime 형식의 데이터를 우선적으로 String 으로 변환해 주어야 하는 것이다.

해서, .NET 은 모든 클래스에 대해서 ToString() 이라고 하는 메서드를 제공한다. 이 메서드는 현재의 데이터를 String 으로 변환시켜주는 역할을 담당한다. 해서 우리의 소스에서는 DateTime.Now.ToString() 이라고 코딩하였으며, 이 결과 현재의 날짜와 시간을 문자열로 얻어낼 수 있게 되는 것이다.

이제 여러분은 ASP.NET 에 대해서 조금씩, 조금씩 깊게 알아가기 시작하고 있다. 이전에 ASP 를 접해본 개발자라면 ASP.NET 이라는 것이 ASP 라는 기술에 .NET 이라는 기술을 접목한 것 이상의 어떠한 기술이라는 느낌을 받기 시작할 지도 모르겠다.

좋다. 어쨌든 여러분은 지금 ASP.NET 이라는 것에 대해서 흥미를 가지기 시작하고 있다. 그렇다면, 이제부터 구체적으로 알아보도록 하자. 여러분이 그토록 기다리던 화면을 꾸미는 이야기들을 말이다


authored by

  DevMania
  2010-04-29(21:19)
test
  DevMania
  2010-04-29(21:20)
ㅡㅡ; 왜 댓글이 하나도 없죠?
  guy209
  2010-12-06(18:37)
캐릭 이미지
이 강좌가 쓰여졌던 시간에는 댓글기능이 없었던 걸로 압니다 ㅡㅡ,;;
  leenamsuk
  2012-07-19(11:01)
캐릭 이미지
태오님 오타입니다. 중간에 CodeBehind 가 Codebehind 로 대체되었다는 것만
을 -> 요부분에서 앞쪽의 CodeBehind가 Src가 아닌지요??? 뒤늦게 asp.net공부
를 시작해서 첫강의 이론부터 부지런히 읽고 따라하기 중입니다. 좋은강의 감사합니
다.

  taeyo
  2012-07-19(11:11)
캐릭 이미지
/leenamsuk 그렇네요. ^^ 수정했습니다.
  leenamsuk
  2012-07-19(12:25)
캐릭 이미지
태오님 오타입니다. 강좌아래쪽에 DateTime 이라는 형식은 String 이 아닌 말 드래
도 -> 말 그대로 일것 같습니다만....오타찾느라 눈에불킨건 절대 아니구요...오해마
시길..^^


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})