Asp Net MVC RenderSection Overload 구현

Asp Net MVC RenderSection Overload 구현

.Net framework v4.0, Visual Studio 2010, asp.net MVC3 프로젝트 기준으로 진행된 내역입니다.

Asp.Net MVC 중에 _Layout.cshtml에서 각 페이지 렌더링 될 때 사용될 기본적인 룰을 정리하던 도중 RenderSection처리하는 부분이 너무 번거로운 것 같아 '좀 내 입맛대로 해보자!'하는 취지에서 찾아보고 진행했던 내용입니다.

WebViewPage클래스를 상속받는 클래스 생성

RenderSection은 MSDN을 찾아보면 System.Web.WebPages.WebPageBase 클래스에 구현되어 있으니 WebPageBase클래스를 상속받은 클래스를 생성해도 되지만, WebViewPage클래스에 구현되어 View 페이지(*.cshtml)에서 사용되는 유용한 속성, 메서드들은 사용할 수 없거나, 다시 구현해야 하기 때문에 WebViewPage클래스를 상속받는 클래스를 생성합니다.

클래스를 생성하는 위치는 적절하게 선택하면 되며, 여기서는 WebViewPageHandler 클래스로 진행하도록 하겠습니다.

제가 원하는 RenderSection의 기능이 및 를 필요에 따라서 삭제하고, 추가로 jquery에서 사용되는 $(document).ready... 로 시작되는 부분을 필요에 따라서 삭제할 수 있도록 하는 부분이어서 아래와 같이 구현하였습니다.

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.WebPages; using System.Text.RegularExpressions; namespace 네임스페이스 명 { public abstract class WebViewPageHandler : WebViewPage { public override void InitHelpers() { base.InitHelpers(); } /// /// 레이아웃 페이지에서 명명된 섹션의 콘텐츠를 렌더링하고 섹션이 필수인지를 지정합니다. /// 또한 스크립트 블럭 테그와 Jquery의 '$(document).ready(function () {' 항목과 끝 '});' 항목을 삭제할지 지정합니다. /// /// 렌더링할 섹션입니다. /// 섹션을 필수로지정하려면 true이고, 그렇지 않으면 false입니다. /// 상단에 스크립트 블럭 시작Tag 와 끝Tag를 삭제하려면 true, 그렇지 않으면 false입니다. /// Jquery의 '$(document).ready(function () {' 항목과 끝 '});' 항목을 삭제하려면 true, 그렇지 않으면 false입니다. /// 렌더링할 HTML 콘텐츠입니다. public HelperResult RenderSection(string name, bool required, bool isRemoveScriptBlock, bool isRemoveDocReady) { String renderString = NoNull.ToString(base.RenderSection(name, required), string.Empty); #region 객체에 대한 유효성 검사를 실시합니다. if (string.IsNullOrEmpty(renderString) && !required) { // 필수지정이 되어 있지않고, 구현 된 Section 내용이 없다면 null을 리턴합니다. // cshtml에서는 아무런 내용도 작성되지 않습니다. return null; } else if (string.IsNullOrEmpty(renderString) && !required) { // 필수로 지정되어있으나 구현 된 Section 내용이 없다면 오류로 생각해야 합니다. // 때문에 MSDN 오류 처리에 맞춰 오류를 발생시킵니다. throw new HttpException("렌더링할 섹션을 찾을 수 없습니다."); }

댓글

이 블로그의 인기 게시물

HTML 13단계 - 폼(Form) 1탄

임시 인터넷 파일캐싱을 위한 방지 html,css,javascript

[C#]Log4Net 사용법