54

我想做这个:

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

看起来http://razorengine.codeplex.com是完美的,除了它已经一岁了。

编辑:事实证明 RazorEngine 已经转移到 GitHub 并在几个月前进行了提交:https ://github.com/Antaris/RazorEngine

我注意到服务堆栈有一些 Razor 自托管,但是虽然这里有一个很长的页面http://razor.servicestack.net没有“你好世界,你完全可以从控制台做到这一点”。

在控制台应用程序中从 ASP.NET Razor 模板生成 HTML 的当前最佳解决方案是什么?

4

4 回答 4

38

在控制台应用程序中从 ASP.NET Razor 模板生成 HTML 的当前最佳解决方案是什么?

RazorEngine. 句号。

于 2013-01-09T21:16:25.527 回答
14

ServiceStack 是渲染 Razor 视图页面的另一个选项。尽管它针对集成到ASP.NETHttpListener Web 主机进行了优化(并提供 API 用于在目录中自动发现和注册视图页面、动态重新编译修改的页面等),但它还支持静态生成视图页面:

var razor = new RazorFormat {
    VirtualPathProvider = new InMemoryVirtualPathProvider(new BasicAppHost()),
    EnableLiveReload = false, //don't scan for file system for changes
}.Init();

var page = razor.CreatePage("Hello @Model.Name! Welcome to Razor!");
var html = razor.RenderToHtml(page, new { Name = "World" });
html.Print();

这是此示例的独立单元测试

使用 ServiceStack 的 Razor 视图渲染引擎的好处包括可以访问许多移植到 ServiceStack 的 MVC 的 HtmlHelper。您还可以从自托管 ServiceStack HttpListener 轻松托管 razor 网站,如razor-console.servicestack.net中所示,其源代码可在自托管控制台应用程序Windows 服务中获得。

于 2013-01-10T17:01:58.580 回答
2

Nancy 具有自托管选项,并且能够将 Razor 作为视图引擎插入。

https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-wcf

https://github.com/NancyFx/Nancy/wiki/Razor-View-Engine

于 2013-01-09T18:21:29.783 回答
0

我不会将此称为“当前最佳”解决方案。但是,我发现它很有趣,它可以让你完成你想做的事情。它只是不是很整齐地包裹起来。 http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revised-for-mvc3-rc.html/

于 2013-01-09T17:54:23.963 回答