asp.net 외부에서 Razor View Engine을 사용할 수 있습니까?
Razor View Engine을 살펴보면 특히 html 생성과 관련이없는 매우 멋지고 간결한 구문을 볼 수 있습니다. 그래서 "일반적인".net 환경에서 asp.net 외부의 엔진을 사용하여 텍스트, 코드 등을 생성하는 것이 얼마나 쉬운 지 궁금합니다.
모든 포인터, 예, 설명 또는 설명을 환영합니다.
여기에는 두 가지 문제가 있습니다.
- 예, Andrew의 블로그 http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of에 설명 된대로 ASP.NET 앱 도메인의 컨텍스트 외부에서 Razor View Engine을 실행할 수 있습니다. -aspnet-revised-for-mvc3-rc.html
- 그러나 Razor는 Razor 파서가
<tags>
코드와 태그 간의 전환을 결정하기 위해 존재를 사용한다는 점에서 여전히 xml과 유사한 태그 (예 : HTML)를 생성하는 데 주로 초점을 맞추고 있습니다. 텍스트를 생성하는 데 사용할 수 있지만 출력이 의도가 무엇인지에 대한 Razor의 가정과 일치하지 않으면 문제가 발생할 수 있습니다.
예를 들어 이것은 유효한 Razor 코드이지만 ( <div>
태그로 인해 ) :
@if(printHello) {
<div>Hello!</div>
}
다음 스 니펫은 유효하지 않습니다 (Hello!는 여전히 코드로 취급되기 때문입니다).
@if(printHello) {
Hello!
}
그러나 <text>
여러 줄 블록에 대한 전환을 강제하는 데 사용할 수 있는 특수 태그가 있습니다 ( <text>
태그가 렌더링되지 않음).
@if(printHello) {
<text>Hello!
Another line</text>
}
다음을 사용하여 한 줄을 강제로 전환하는 더 짧은 구문도 있습니다 @:
.
@if(printHello) {
@:Hello!
}
RazorEngine을 확인하십시오. Razor 위에 구축 된 작은 프레임 워크로이를 수행 할 수 있습니다.
RazorTemplates 라이브러리를 살펴보세요 . RazorEngine 라이브러리보다 가볍고 스레드로부터 안전하며 매우 멋진 최소 인터페이스를 제공합니다.
템플릿 컴파일 및 렌더링은 두 줄의 코드처럼 간단합니다.
var template = Template.Compile("Hello @Model.Name!");
Console.WriteLine(template.Render(new { Name = "World" }));
RazorEngine 과 RazorTemplates 모두 여기에 이미 언급되어 있지만 RazorMachine을 확인하십시오 . MVC가 아닌 앱을 (다른) 기존 MVC 앱의 ~ / Views 폴더로 지정하고 적절한 모델을 전송하여 실행하고 두 줄의 코드로 렌더링 된 출력을 얻을 수 있습니다.
var sb = new StringBuilder();
//RazorMachine magic:
//*tweets* is basically List<TwitterPost> - simple collection of custom POCO
//first param for rm.ExecuteUrl points to ~/Views folder, MVC style
var rm = new RazorMachine(htmlEncode: false);
ITemplate template = rm.ExecuteUrl("~/twitter/twitter", tweets);
//do whatever you want with result
sb.Append(template);
코드 또는 텍스트 생성 : T4 템플릿 : http://msdn.microsoft.com/en-us/library/bb126445.aspx 또는 codesmith 도구 와 같은 의미 입니까?
참고 URL : https://stackoverflow.com/questions/3628895/is-it-possible-to-use-razor-view-engine-outside-asp-net
'development' 카테고리의 다른 글
어떤 디자인 패턴을 사용해야합니까? (0) | 2020.08.16 |
---|---|
전체 컨텍스트로 git diff를 얻는 방법은 무엇입니까? (0) | 2020.08.16 |
git 병합 충돌에서 생성되는 BACKUP, BASE, LOCAL 및 REMOTE 파일은 무엇입니까? (0) | 2020.08.16 |
정수 범위를 나타내는 C # 유형이 있습니까? (0) | 2020.08.16 |
Vim에서 선택 항목 검색 (0) | 2020.08.15 |