SQLER 처음 가입했을때 Razor 에 대한 관심사가 정말 많은거에 감동해서 MVC 없이 Razor 돌릴 수 있는지 물어봤더니 왜.................................................왜............................................왜...냐는군요.


그렇게 하면 안됩니까?ㅠㅠ


그래서 스스로 찾았습니다. 구글신을 절 버리지 않더군요.

바로 Razor Engine입니다.


http://razorengine.codeplex.com


Razor 뷰 엔진을 완전히 원시적으로 접근하여 범용으로 쓸 수 있게 만들어주는 템플릿 프레임워크입니다.

그래서 활용 범위는 C#이나 VB 관련 프로젝트라면 모두 가능하다는 점이죠. 심지어 응용 프로그램에서까지 지원합니다.

당연히 활용 분야는 MVC가 아닌 그냥 웹 응용 프로그램 및 웹 사이트입니다.

또한 오픈 소스(MS-PL 라이센스)이기 때문에 전혀 부담이 없습니다.

MVC 2요? 흐음.. 모르겠습니다.ㅋ


어쨌든 사용 예제를 보면서 어떻게 돌아가는지 보겠습니다.


기본 템플릿 해석 예시

  string template = "Hello @Model.Name! Welcome to Razor!"
  string result = Razor.Parse(template, new { Name = "World" });

익명 클래스도 지원됩니다.ㅋ

인라인 도우미 지원

  string template = 
  @"@helper MyMethod(string name) {
      Hello @name
  }
  @MyMethod(Model.Name)! Welcome to Razor!";
  string result = Razor.Parse(template, new { Name = "World" });

Razor를 만지신 분들에게 도우미의 유용성은 말이 필요없죠.

전처리 템플릿

You can precompile your templates before use if you have any really nontrivial views to compile.
    string template = "Some really complex template that will take time to parse";
    
    Razor.Compile(template, "complex");
    Razor.Run("complex");

If your template requires a model you can pass in your model type or, if your type is anonymous, you can call the CompileWithAnonymous() method. It is not necessary to pass in your Anonymous type.
    Razor.Compile(template, typeof(SomeModel), "complex");
    Razor.CompileWithAnonymous(template, "complex");

web.config 에서 설정을 함으로써 MediumTrust 신뢰도 세팅으로 Razor 웹 사이트 환경을 구축할 수 있습니다.

이때, http://razorengine.codeplex.com/releases 페이지에 가서 Razor Web 어셈블리를 추가하셔야 세팅이 됩니다.

Step 1 - RazorVirtualPathProvider 클래스 초기화

먼저 어플리케이션 시작시 RazorVirtualPathProvider 클래스를 등록해 BuildManager 클래스가 Razor 템플릿을 인식하고 처리하게 합니다.

protected void Application_Start()
{
    HostingEnvironment.RegisterVirtualPathProvider(new RazorVirtualPathProvider());
}

Step 2 - RazorEngine 설정 영역 추가

MediumTrust 신뢰도로 Razor 뷰를 해석할 수 있도록 web.config 에 추가하는 예제입니다. WebCompilerServiceFactory 클래스를 이용함으로써 이 서비스를 활성화시킵니다.

<configuration>
    <configSections>
        <section name="razorEngine" type="RazorEngine.Configuration.RazorEngineConfigurationSection, RazorEngine" requirePermission="false" />
    </configSections>

    <razorEngine factory="RazorEngine.Web.WebCompilerServiceFactory, RazorEngine.Web" />
</configuration>

Step 3 - BuildProviders 설정

필자는 ".csrzr" 와 ".vbrzr" 를 확장자로 설정하여 BuildProvider 클래스가 해당 확장자를 인식해 해석할 수 있도록 합니다. 필자의 경우는 이미 MVC3에 존재하는 cshtml 및 vbhtml 확장자와 햇갈리는 점을 방지하기 위해서 이렇게 세팅했답니다.

<configuration>
    <system.web>
        <buildProviders>
            <add extension=".csrzr" type="RazorEngine.Web.CSharp.CSharpRazorBuildProvider, RazorEngine.Web" />
            <add extension=".vbrzr" type="RazorEngine.Web.VisualBasic.VBRazorBuildProvider, RazorEngine.Web" />
        </buildProviders>
    </system.web>
</configuration>


이제 웹 응용 프로그램에 Razor 템플릿 세팅은 끝났습니다.


이 패키지는 NuGet 확장을 설치한 분이 있다면 다음과 같은 명령어로 바로 세팅이 가능하다고 합니다.


Install-Package RazorEngine

이제 Razor 템플릿 엔진을 다양한 분야에 사용할 수 있는 시대가 왔습니다. 역시 최고!

No. Subject Author Date Views
Notice [공지] 이렇게 SQLER에서 처음 글쓰기를 시작해 보는건 어떨까요? [1] 코난 2010.08.19 113010
118 [ASP.NET MVC3강좌] 4. Layout , Partial Page LoveCiel 2011.06.14 22033
117 [ASP.NET MVC3강좌] 3. HelloWorld MVC LoveCiel 2011.06.14 23552
116 [ASP.NET MVC3강좌] 2. MVC 환경 세팅 LoveCiel 2011.06.14 23059
115 [ASP.NET MVC3강좌] 1. MVC(Model- View – Controller) 란 무엇인가. [5] LoveCiel 2011.06.14 30611
» Razor 템플릿을 MVC가 아닌 일반 웹 응용 프로그램에서 돌리기! [1] 컴포지트 2011.05.24 10890
113 [Razor Customize] 3. Razor 페이지 상속받기. [수정] [1] 컴포지트 2011.05.20 10173
112 [짤막팁] Webmatrix.Data.Database 클래스의 한계 [2] 컴포지트 2011.05.20 19398
111 ASP.NET MVC3 Tool 한글 버전이 오늘 공식 발표 되었습니다. [4] 코난(김대우) 2011.05.12 10995
110 MIX11 - ASP.NET MVC3, MvcScaffolding, Entity Framework Code First, SQL Compact 4, jQuery, NuGet! [1] 코난(김대우) 2011.05.12 9617
109 ASP.NET MVC + EF Code First 맛보기 동영상 [2] 코난(김대우) 2011.05.11 9853
108 ASP.NET MVC 맛보기 동영상 [2] 코난(김대우) 2011.05.11 11637
107 MIX11을 통해 보는 차세대웹 - Kinect SDK, 재미재미재미있는 Kinect! (13/13) 코난(김대우) 2011.05.06 11814
106 MIX11을 통해 보는 차세대웹 - Kinect SDK, 모든 우주를 키넥트로 여행 (12/13) 코난(김대우) 2011.05.06 11200
105 MIX11을 통해 보는 차세대웹 - Kinect SDK, 동작인식 장치의 가능성 (11/13) [1] 코난(김대우) 2011.05.06 12819
104 MIX11을 통해 보는 차세대웹 - Silverlight5 3D 그리고, Silverlight의 내일(10/13) 코난(김대우) 2011.05.02 15376
103 MIX11을 통해 보는 차세대웹 - Silverlight5의 진화는 현재진행형 (9/14) 코난(김대우) 2011.05.02 21580
102 [Razor Customize] 2. 섹션에 내용 말고 페이지로 쉽게 렌더링하고 싶다면? [2] 컴포지트 2011.05.02 10445
101 [Razor Customize] 1. 초간단 반복 템플릿 만들기 [1] 컴포지트 2011.05.02 10031
100 MIX11을 통해 보는 차세대웹 - Windows Phone 망고의 새로운 플랫폼 API 소개 (8/13) 코난(김대우) 2011.05.02 16032
99 MIX11을 통해 보는 차세대웹 - Windows Phone 망고의 성능향상 (7/13) 코난(김대우) 2011.05.02 22255





XE Login

테스트 팝업
Close