공통 상단

공통 좌측

 

 

 

실제 코드 화면

공통 하단

 

보통 그럼 실제 코드 화면 파일(.aspx)에서 공통 상단, 공통 좌측, 공통 하단을 include하여 사용하죠...(다른 좋은 방법을 전 못찾아서...제가 하수라 그럴 수도 있습니다.)

아니면 Server.Execute를 사용하시겠죠...

 

하지만 include나 Execute를 사용하면 실제 코드 화면 파일에 공통 부분이 붙는 것이라 이것은 그냥 두고 추가적으로 화면 형태(실제 코드를 제외한 부분)가 달라지는 경우 다른 파일로 만들어야 합니다. (물론 Copy & Paste하면 됩니다. 그리고 외형을 바꿔주시면 되죠...이렇게 하면 되지 하시는 분은 더 이상 읽지 않으셔도 됩니다.)

 

거꾸로 생각해 보면.....실제 코드 화면 부분만 따로 빼서 파일로 놔두고....외형에 실제 코드 화면 파일을 넣어주면 외형이 달라도 얼마든지 사용 가능합니다. (맞나요? 잘이해가 되지 않으시면 위의 표에서 "실제 코드 화면"만 따로 파일로 되어 있다고 생각해 보세요)

 

그래서 제가 생각한 방법을 설명해 보도록 하겠습니다.

Page 객체를 상속 받아서 하나의 클래스를 만들었습니다. 대략적인 코드를 보여드리자면 아래와 같습니다.

 

[C#]

namespace DotNetTest

{

    /// <summary>

    /// NexWebForm에 대한 요약 설명입니다.

    /// </summary>

    public class NexWebForm : System.Web.UI.Page

    {

        public NexWebForm()

        {

            //

            // TODO: 여기에 생성자 논리를 추가합니다.

            //

        }

 

        protected override void Render(HtmlTextWriter output)

        {

            this.LoadLayout();

           // 실제 코드 화면 이전의 태그들을 출력

           // (td/tr/table 시작 태그, 메뉴들, body 시작 태그, html 시작 태그)

            base.Render(output);     // 실제 코드 화면

            this.LoadAfter();

           // 실제 코드 화면 이후의 태그들을 출력

           // (td/tr/table 종료 태그, 카피라이트, body 종료 태그, html 종료 태그)

        }       

 

        protected void LoadLayout()

        {

            String szLayout;

            szLayout = "/DotNetTest/Layout/Layout_before.aspx";

            Context.Server.Execute(szLayout);

        }

 

        public void LoadAfter()

        {

            String szLayout;

            szLayout = "/DotNetTest/Layout/Layout_after.aspx";

            Context.Server.Execute(szLayout);

        }

    }

}

 

보시면 아시겠지만 Render 함수를 override했습니다. 그래서 Render(컨트롤들을 사용자가 보는 HTML Source로 변환해주는 함수)에서 공통 적인 부분들을 붙여넣었죠. 물론 실제 코드 화면도 넣습니다.

 

보통 한 화면을 만드시면 분명 Page 객체에서 상속을 받으실겁니다. 이걸 위의 클래스에서 상속 받도록 수정하면 끝입니다.

 

그럼 "공통~"부분은 자동으로 그리고 "실제 코드 화면"만 제작하시면 됩니다.

 

실제 코드 화면 aspx에서 html 등등은 다 빼고 <form> 태그 부분만 남겨놓고 그 부분만 충실하게 개발하시면 됩니다.

 

소스도 간단해 지죠...

또한 로그인되어 있는지를 체크하는 루틴이 필요한 경우 위의 코드에 Page_Load 이벤트를 추가하셔도 되고 그냥 Render에서 처리하셔도 됩니다.

 

유용한 정보가 되셨으면 좋겠습니다. 혹시 유용한지 잘 모르시겠다면 한번 위 방법데로 샘플 몇개를 제작해 보세요.

 

실제로 JAVA에서는 위의 구조와 유사한 구조로 개발을 많이 하고 있습니다.

혹시 궁금하신 사항이 있으시면 메일로 주세요....

 

shaper93@daum.net

 

자료출처 : 데브피아 ASP.NET 게시판 이창현(shaper)님의 글

'.net' 카테고리의 다른 글

포스트백 막아주는 스크립트  (0) 2007.05.03
Caching in ASP.NET  (0) 2007.05.03
ASCX 에서 컨트롤 찾는 자바스크립트  (1) 2007.05.03
ASP <--> ASP.NET 한글 쿠키정보 교환하는 방법  (0) 2007.05.03
Page Syntax 설정  (0) 2007.05.03

+ Recent posts