programing

asp.net 외부에서 레이저 뷰 엔진을 사용할 수 있습니까?

javamemo 2023. 5. 5. 08:31
반응형

asp.net 외부에서 레이저 뷰 엔진을 사용할 수 있습니까?

Razor View Engine을 보면 HTML 생성과 관련이 없는 매우 멋지고 간결한 구문을 볼 수 있습니다.그래서 "일반" .net 환경에서 asp.net 외부의 엔진을 사용하여 텍스트, 코드 등을 생성하는 것이 얼마나 쉬운지 궁금합니다.

포인터, 예를 들어 설명 또는 설명은 언제든지 환영합니다.

여기에는 두 가지 문제가 있습니다.

  1. 예, ASP의 컨텍스트 밖에서 레이저 뷰 엔진을 실행할 수 있습니다.Andrew의 블로그에 설명된 바와 같이 NET 앱 도메인: http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revised-for-mvc3-rc.html
  2. 그러나 Razor는 여전히 주로 Razor 파서가 다음의 기능을 사용한다는 점에서 xml과 같은 마크업(예: HTML)을 생성하는 데 초점을 맞추고 있습니다.<tags>코드와 마크업 간의 전환을 결정합니다.텍스트를 생성하는 데 사용할 수 있지만 출력이 의도에 대한 레이저의 가정과 일치하지 않을 경우 문제가 발생할 수 있습니다.

그래서 예를 들어, 이것이 유효한 레이저 코드인 동안.<div>태그):

@if(printHello) {
   <div>Hello!</div>
}

Hello!가 여전히 코드로 처리되고 있으므로 다음 스니펫이 잘못되었습니다.

@if(printHello) {
   Hello!
}

하지만 특별한 것이 있습니다.<text>다중 라인 블록에 대한 전환을 강제로 수행하는 데 사용할 수 있는 태그입니다.<text>태그가 렌더링되지 않음):

@if(printHello) {
   <text>Hello!
   Another line</text>
}

또한 다음을 사용하여 단일 행을 강제로 전환하는 더 짧은 구문이 있습니다.@::

@if(printHello) {
   @:Hello!
}

Razor Engine을 확인해 보세요. Razor 위에 만들어진 작은 프레임워크를 통해 이 작업을 수행할 수 있습니다.

레이저 템플릿 라이브러리를 살펴봅니다.레이저 엔진 라이브러리보다 더 가볍고, 스레드 세이프이며, 매우 멋진 미니멀 인터페이스를 갖추고 있습니다.

템플릿을 컴파일하고 렌더링하는 작업은 두 줄의 코드만큼 간단합니다.

var template = Template.Compile("Hello @Model.Name!");
Console.WriteLine(template.Render(new { Name = "World" }));

레이저 엔진과 레이저 템플릿은 이미 여기에 언급되어 있지만 레이저 기계를 확인하십시오.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 또는 코드스미스 도구와 같은 것을 의미합니까?

2022년 5월이고 저는 이 블로그를 찾기 전에 개구리 몇 마리와 키스했습니다: https://soundaranbu.medium.com/render-razor-view-cshtml-to-string-in-net-core-7d125f32c79

와 함께 사용하기 매우 쉽습니다.넷코어 레이저 클래스 라이브러리(RCL) 및 이 작은 라이브러리: 레이저 템플릿

using Razor.Templating.Core;

var model = new ExampleModel()
{
    PlainText = "This text is rendered from Razor Views using Razor.Templating.Core",
    HtmlContent = "<em>You can use it to generate email content, report generation and so on</em>"
};

// Both ViewBag and ViewData should be added to the same dictionary. 
var viewDataOrViewBag = new Dictionary<string, object>();
// ViewData is same as mvc
viewDataOrViewBag["Value1"] = "1";

// ViewBag.Value2 can be written as below. There's no change on how it's accessed in .cshtml file
viewDataOrViewBag["Value2"] = "2";

var html = await RazorTemplateEngine.RenderAsync("/Views/ExampleView.cshtml", model, viewDataOrViewBag);

언급URL : https://stackoverflow.com/questions/3628895/is-it-possible-to-use-razor-view-engine-outside-asp-net

반응형