asp.net 외부에서 레이저 뷰 엔진을 사용할 수 있습니까?
Razor View Engine을 보면 HTML 생성과 관련이 없는 매우 멋지고 간결한 구문을 볼 수 있습니다.그래서 "일반" .net 환경에서 asp.net 외부의 엔진을 사용하여 텍스트, 코드 등을 생성하는 것이 얼마나 쉬운지 궁금합니다.
포인터, 예를 들어 설명 또는 설명은 언제든지 환영합니다.
여기에는 두 가지 문제가 있습니다.
- 예, ASP의 컨텍스트 밖에서 레이저 뷰 엔진을 실행할 수 있습니다.Andrew의 블로그에 설명된 바와 같이 NET 앱 도메인: http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revised-for-mvc3-rc.html
- 그러나 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
'programing' 카테고리의 다른 글
git 복제 중 원격 종료가 예기치 않게 끊어졌습니다. (0) | 2023.05.05 |
---|---|
상수에 대한 C# 명명 규칙? (0) | 2023.05.05 |
잡기 및 다시 던지기에 대한 모범 사례.NET 예외 (0) | 2023.05.05 |
WPF의 DataGrid Column 바인딩 가시성 (0) | 2023.05.05 |
mongodb 구성 파일에서 권한을 설정하는 방법은 무엇입니까? (0) | 2023.05.05 |