视图引擎
自.NET Framework开始,在ASP.NET MVC框架中就引入了 RazorEngine
,也就是视图引擎,通常我们的视图是采用 .cshtml
文件进行编写。
由于我们是前后端分离的 WebAP
I 项目,所以并没有引入完整的 asp.net core mvc
框架,所以,今天在 Hoa
框架中集成 RazorEngine
功能
简单入门
非强类型
复制 var templateText = @"Hello @Model.Name." ;
var result = RazorEngineHelper . RunCompile (templateText , new { Name = "Hoa" }); // => Hello Hoa.
由于编辑模板需要付出昂贵的性能代价,所以 Hoa
框架只在首次编译模板后就将模板缓存起来并生成 .dll
文件。这样就无需担心后续性能问题了。
强类型模型
复制 var templateText = @"Hello @Model.Name." ;
var result = RazorEngineHelper . RunCompile < Model >(templateText , new Model { Name = "Hoa" }); // => Hello Hoa.
加载 .cshtml
文件
复制 // 非强类型
var cshtmlPath = "你的.cshtml完整路径" ;
var result = RazorEngineHelper . RunCompileViewPath (cshtmlPath , new { Name = "Hoa" }); // => Hello Hoa.
// 强类型
var result = RazorEngineHelper . RunCompileViewPath < Model >(cshtmlPath , new Model { Name = "Hoa" }); // => Hello Hoa.
高级入门
Hoa 内置的 Razor 视图引擎
支持完整的 ASP.NET Core 3.x 语法,比如
自定义方法
复制 <area>
@{ RecursionTest(3); }
</area>
@{
void RecursionTest(int level)
{
if (level <= 0)
{
return;
}
<div>LEVEL: @level</div>
@{ RecursionTest(level - 1); }
}
}
强类型方法调用
模板定义
复制 Hello @A, @B, @Decorator(123)
强类型模型
复制 public class CustomModel
{
public int A { get; set; }
public string B { get; set; }
public string Decorator(object value)
{
return "-=" + value + "=-";
}
}
编译模板
复制 var result = RazorEngineHelper . RunCompile < CustomModel >(templateText , u => {
u . A = 10 ,
u . B = "Hoa"
});
引入程序集
模板定义
复制 @using System.IO
<div>@Model.Name</div>
<div>@Path.GetFullPath("~/Views/Home.cshtml")</div>
编译模板
复制 var result = RazorEngineHelper . RunCompile (templateText
, new { Name = "Hoa" }
, typeof ( System . IO . Path ));
更多关于RazorEngineCore 可查看官方文档 。