2012-03-22 1 views
3

나는 Orchard CMS 렌더링 및 뷰 엔진을 해부하여 어떻게 조합했는지 이해하려고 노력했습니다. 나는 RenderBody 나 RenderSection 어느 것도 호출되지 않는다는 것을 발견했다. 면도기 뷰 엔진이 하나 또는 둘 다를 호출해야한다는 것을 이해합니다.오차드 (Orchard)는 RenderBody에 대한 호출없이 어떻게 빠져 나옵니까?

Razor에서 RenderBody 또는 RenderSection을 호출해야하거나 예외가 발생해야한다는 요구 사항을 해결하는 것은 무엇입니까?

사용자 정의보기 엔진 (ThemeAwareViewEngine)이 있다는 사실입니까? 그렇다면 어떻게 콘텐츠를 생성하기 위해 Razor 구문 구문 분석을 처리합니까?

감사합니다.

답변

2

실제로는 다른 방향입니다. Razor 그 자체는이 요구 사항이있는 RazorViewEngine이라는 RenderBody이라고 부를 것을 요구하지 않습니다. Razor를 사용하는보기 엔진은 완전히 다른 작업 방식을 사용할 수 있습니다. https://github.com/Antaris/RazorEngine 또는 https://github.com/Buildstarted/RazorSharp 좀 간단한 레이아웃에 면도기를 사용하는 마크 다운 뷰 엔진을 작성했습니다.

소스를 읽으면 몇 가지 사용자 지정보기 엔진을 만든 것처럼 보입니다. 그들의 RazorViewEngine은 면도날 생성 파일의 기본 클래스를 자신의 사용자 정의 WebViewPage으로 바꿉니다. DisplayZone의 별칭 인 메소드가 있습니다. 이것은 자식 뷰를 렌더링 할 수있게 해주는 것인데, , ContentZone 등과 같이 LayoutAwareViewEngine 내에 여러 유형의 영역이있는 것처럼 보입니다.

그래서 결국 그들은 많은 사용자 정의 코드를 작성했습니다.

+0

알겠습니다. 이걸 소화 시키자. 감사! – rboarman

+0

알아 내기에는 꽤 많은 파고가 있었지만 정말 멋지게 보입니다. 확실히 그것을 좀 더 감사 할 것입니다. – Buildstarted