블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



예전에 "#if#end 또는 Conditional Attribute의 적절한 사용"라는 내용으로 블로 포스팅 한적이 있다. #if #endif의 사용법은 해당 포스팅을 참고하면 좋을 것이다. 이번에는 ASP.NET MVC 개발을 하면서 View에 디버깅 모드를 분리하는 방법에 대해  알아 보도록 하겠다.

@{

#if DEBUG

    // 해당 코드

#else

    // 해당 코드

#endif

}

[코드 1 - Index.cshtml 파일]


 위 [코드1]은 View에서 서버 코드를 작성 할때 처럼 "@{ }"를 이용해서 디버깅모드 설정을 한 것이다. 그러나 이건 마크업형태로 디버깅하기에는 매우 불편한 방법이다. 그래서 좀더 스마트 한 방법을 알아 보도록 하겠다. 이 방법을 사용하려면 기본적으로 "확장메서드(Extension Methods)"의 개념을 알고 있을 필요가 있다. 사용법 모른다면 일전에 제가 블로그 포스팅한 내용 "확장메서드(Extension Methods) 사용법" 참고 하길 바란다.

 

public static class ExtensionMethods

{

    public static bool IsDebug(this HtmlHelper htmlHelper)

    {

#if DEBUG

            return true;

#else

        return false;

#endif

    }

}

[코드 2 - cs파일에 HtmlHelper의 확장 메서드]

 위 [코드 2]처럼 HtmlHelper의 확장메서드를 만든다. 이는 간단하게 디거깅 모드인지 아닌지를 확인하는 메서드이다.



@if (Html.IsDebug())

{

    <div>Debug 모드</div>

}

else

{

    <div>Release 모드</div>

}

 

[코드 3 - Index.cshtml 파일]


 위 [코드 3]은 [코드 2]에서 만든 확장메서드를 사용하는 방법을 나타낸 것이다. 


 View에서 디버깅모드를 체크할때에는 [코드 1]을 이용하는 것 보다 확장 메서드를 이용하는 것이 좀더 스마트 한 방법이 아닐까 생각이 든다. 

Posted by happydong
, |



ASP.NET MVC로 개발하다보면 RenderBody라는 녀석을 많이 봤을 것이다. 이와 비슷한게 RenderSection과 RenderPage가 있다. 이녀석들은 WebPageBase 클래스에 포함된 메소드들 이다. 

그럼 
RenderBody는 MVC템플릿으로 프로젝트를 생성하면 자동으로 _layout.chhtml 파일에 body태그에 들어가 있는 것을 봣을 것이다. 이는 많이 봤을 테니 따로 설명은 하지 않겠다. 그리고 RenderPage라는 녀석은 Html.RenderPartial과 같은 역활을 한다. 다만 다른건 RenderPage은 페이지가 있는 경로로 파일을 부르고, Html.RenderPartial은 파일이름으로 찾아 뿌려준다. 아래 예제를 보면 감이 올 것이다. 

@RenderPage("test.chhmlt");

@Html.RenderPartial("test"); 

[소스 1 - RenderPage와 Html.RenderPartial 사용법]

(** Html.RenderPartial에 대한 내용 설명은 MSDN을 참고 하길 바란다.)


자 그럼 RenderSection은 어떻게 사용하는가? 어떻게 사용할까에 대해서 생각해 보자. 일단 저 이렇게 사용 할 수 있을 것같다. 우리가 웹페이지들을 개발하다 보면, 어쩔수 없이 body태그 안에 스크립트문을 넣어야 하는 일이 많이 생길 것이다. 누가 그랬는가...body 태그 중간에 스크립트가 들어가있으면 페이지 렌더링 되는데 시간이 걸린다고.... 그럼 RenderSection녀석을 이용해서 해결해 보자!!


[그림 1]

위 [그림 1]과 같이 어쩔수 없이 body태그 중간에 스크립트가 들어가 있는 모습이다.

[그림 2]


 위 [그림 2]는 ASP.NET MVC로 개발해 봤던 분이라면 금방 이해할 수 있을 것이다.
일단 _Layout.cshtml 부분에 @RenderSection 선언해주고, 이름과 필수 요소를 할지를 정의 한다. 첫번째 파라미터가 이름이고, 두번째 파라미터가 필수 요소이다. 필수 요소를 true로 지정하면, Layout을 참조하는 페이지는 모두 RenderSection 선언한 section 블록을 만들어야한다(안그러면 에러난다.). false로 하면 있으나, 없으나 상관없다.



[그림 3]


[그림 3]은 [그림2]를 실행 시켜 소스보기를 해서 본 화면이다.


사용이 아주 간단해서 더이상 말할게 없다. 

스크립트 블록을 나누는거 외에도 이를 이용하면 좀더 View를 세부적으로 나누기가 편할것 같다.






Posted by happydong
, |