博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET RazorEngine Razor知识集合 Razor也可以这样玩
阅读量:6829 次
发布时间:2019-06-26

本文共 1960 字,大约阅读时间需要 6 分钟。

mvc Razor除了在视图上解析外,一样可以这样用。

  在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,首先介绍下RazorEngine,在nuget上可以直接引用到项目上,这个东西通俗的来讲就是可以在任何地方解析razor语法,个人觉得要比 NVelocity灵活好用很多。在codeplex上有介绍,现在好像搬到Github上了,链接,最新的版本在Github上,大家可以看看,使用上很方便,如下:

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

  就这么简单你就可以不只在视图页面上使用Razor了,它完全支持动态类型,如下:

  dynamic ViewBag = new DynamicViewBag(); ViewBag.list = “流年莫逝”; string template = “Hello Word @ViewBag.list”; string result = Razor.Parse(template,null,ViewBag,Guid.NewGuid().ToString());

  一样可以解析出来,看源码活着是VS的智能提示你可以看到Razor.Parse后面需要传递的参数类型,只要对号入座就行了,它是支持cache的,当然它的这种cache我个人理解的并不是那种数据缓存的cache,如上面dynamic类型的解析Razor.Parse我是演示用的Guid,但是你可以用其他的string字符,如果你下次预编译模板的时候还是用的这个名字的话就会直接取cache里的模板来做解析,这样减少了解析时间,这是我的个人理解,目前还没有深入的去研究。

  RazorEngine还支持自定义模板,如下代码:

  //自定义模板 public class MyTemplateBase : TemplateBase { public string GetStr() { return “流年莫逝”; } } //注册自定义模板 public class CustomTemplate : TemplateService { public CustomTemplate() { var Service = new RazorEngine.Configuration.TemplateServiceConfiguration(); Service.BaseTemplateType = typeof(MyTemplateBase<>); var MyTemplate = new TemplateService(Service); Razor.SetTemplateService(MyTemplate); } }

  简单介绍下啊,上面那个是自定义的模板,里面你可以按你的需求写相应的方法,这样在解析的时候你一样可以使用你的方法,比方我的是返回的字符串,你用@GetStr()一样可以得到你的返回值,另外你的自定义模板一样要继承TemplateBase,我看了它的源码不知道为什么一样要带上一个泛型,想研究的可以自己看看,注册模板后你就可以使用了,

  CustomTemplate service = new CustomTemplate(); return service.Parse(Content, null, ViewBag, Guid.NewGuid().ToString());

  按这种方法就可以解析了,Razor.Parse方法是TemplateService类里面的一个虚方法,是支持自己重写的,所以在注册的时候你继承了这个TemplateService类,就是可以实现你想要的了!

  看到官网上有很多提问为什么不能用@Html.Raw()等这些方法,其实你要是仔细看源码的话是可以支持的,只是换了个写法你可以直接用@Raw()来进行输出,就简单介绍这么多吧,其实RazorEngine还有很多功能的,但是目前以上几种完全够解析页面用了!

原文出自:

RazorEngine Razor知识集合:

代码生成就用Razor模板:

Razor - 模板引擎 / 代码生成 - RazorEngine

MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

基于.net搭建热插拔式web框架(RazorEngine实现)

C#模板引擎 RazorEngine3.7的简单使用

转载地址:http://fdfkl.baihongyu.com/

你可能感兴趣的文章
百度地图中找不到BMap的解决
查看>>
2018最新hadoop大数据开发学习路线
查看>>
HDU-1372 Knight Moves BFS
查看>>
HDU-4334 Trouble 哈希表Or有序表查找
查看>>
chattr实现文件不可删除
查看>>
摄影初识之一
查看>>
JavaWeb 之事务
查看>>
jacob打印word(.doc)或者excel(.xls) 【java实现】
查看>>
MapReduce算法例析
查看>>
meta 详解,html5 meta 标签日常设置(转)
查看>>
简单的三元运算符 购物车商品数量文本框
查看>>
linux软件操作
查看>>
Fedora27安装宝塔linux面板出现/usr/lib/rpm/redhat/redhat-hardened-cc1找不到的错误
查看>>
Qt如何设置应用ico图标
查看>>
openwrt-智能路由器hack技术(1)---"DNS劫持"
查看>>
单例模式
查看>>
根据webform页面大小的变化动态调整控件的大小
查看>>
673:Parentheses Balance
查看>>
RabbitMQ学习总结(5)——发布和订阅实例详解
查看>>
C#基础加强二:const和readonly深入研究
查看>>