Razor模板引擎 (RazorEngine)

Razor模板引擎不仅在ASP.NET MVC中内置了Razor模板引擎,还有一个开源的RazorEngine,

这样以来我们可以在非ASP.NET MVC项目中使用Razor引擎,甚至在控制台,WinForm项目中都可以使用。

 

 

文件的创建

文件是一个后缀名为cshtml的文件,如果在非MVC项目中创建Razor文件,可以新建一个html,把后缀名该为cshtml。

 


 

RazorEngine使用初体验

一、前台:

二、后台代码

解释:

使用RazorEngine需提前在项目中引入它的程序集文件dll。

后台代码首先获得cshtml文件将其读成文本文件,在通过Razor.Parse将文本解析为,含义为Razor的模板,将其展出。访问的话应访问代码页面,cshtml只是一个展示模板,等待代码动态绘制内容使用cshtml模板展示.

 


 

 

Razor.Parse()方法

1.通过第二个参数,可以传一个object类型的对象,到前台(cshtml)模板。

string razor = RazorEngine.Razor.Parse(html, new { name = "zs", age = 12 });

注意:传入对象的访问权限,需为public

前台输出这个对象的值:

    <h1>@Model.name</h1>

    <h2>@Model.age</h2>  

 


RazorEngine原理

1.net在编译的时候会把.cshtml文件生成一个动态程序集,每次调用,就会每次生成一个不重复的动态程序集,这样看出会给服务器造成不容小视的压力。

解决办法:

Razor.Parse()方法的第三个参数cacheName

 

如果传入一个cacheName(名字随意),一旦编译成功,下次会使用缓存,不会重复生成新的动态程序集。

 

2.关于cacheName的问题

从上面的原理得知,如果给Razor.Parse()传入cacheName,下次调用可以使用缓存,那么会产生一个问题,cshtml文件如果发生了修改,如果还去调用缓存的话,那么结果会不如意。

解决办法:

将cacheName的值转为动态的:

         1.根据文件名+修改时间

         2.文件的MD5值作为cacheName

         3.文件流转换为新的文本字符串(获取文件内容)

         ........       

 

cacheName细节:

即使cacheName写成一个固定的值,当cshtml发生改变的时候Parse()方法执行后的结果,也会是发生改变的内容。

 

 

 


 

自己封装一个Razor.Parse

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值