.NET Mvc Razor也可以这样玩!
忙碌的工作总是占据了生活的大部分的时间!所以我的博客到现在还是寥寥的几篇文章,技术是用来分享和学习的,对技术有不同的见解,大家都可以分享下,如果如下文章有问题之处请各位指出来,在这个闲下来的时间给大家说说mvc Razor除了在视图上解析外,一样可以这样用。
在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,首先介绍下RazorEngine,在nuget上可以直接引用到项目上,这个东西通俗的来讲就是可以在任何地方解析razor语法,个人觉得要比NVelocity灵活好用很多。在codeplex上有介绍,现在好像搬到Github上了,链接http://razorengine.codeplex.com/,最新的版本在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<T> : TemplateBase<T>{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<T>,我看了它的源码不知道为什么一样要带上一个泛型,想研究的可以自己看看,注册模板后你就可以使用了,
CustomTemplate service = new CustomTemplate();
return service.Parse(Content, null, ViewBag, Guid.NewGuid().ToString());按这种方法就可以解析了,Razor.Parse方法是TemplateService类里面的一个虚方法,是支持自己重写的,所以在注册的时候你继承了这个TemplateService类,就是可以实现你想要的了!
看到官网上有很多提问为什么不能用@Html.Raw()等这些方法,其实你要是仔细看源码的话是可以支持的,只是换了个写法你可以直接用@Raw()来进行输出,就简单介绍这么多吧,其实RazorEngine还有很多功能的,但是目前以上几种完全够解析页面用了!
转载于:https://www.cnblogs.com/liunianmoshi/p/3271670.html
.NET Mvc Razor也可以这样玩!相关推荐
- DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法
DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法 参考文章: (1)DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文 ...
- MVC Razor 语法(转)
http://blog.sina.com.cn/s/blog_580e98300100yvz4.html 原文地址:MVC Razor 语法(转)作者:panzhaowen_jacki 语法名称 Ra ...
- Asp.Net Core Mvc Razor之RazorPage
在AspNetCore.Mvc.Razor命名空间中的RazorPage继承RazorPageBase,并定义的属性为: HttpContext Context 表示当前请求执行的HttpContex ...
- 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图
这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...
- asp.net mvc 包含了一个 html 的助手类在哪里,c# - 在App_Code中使用@HTML的ASP.NET MVC Razor Helper - 堆栈内存溢出...
我尝试在cshtml文件中的App_Code中创建一个Helper. // Using's are needed to ensure helpers function correctly. @usin ...
- C#MVC Razor的Ajax.BeginForm里面的OnSuccess未执行(未成功跳转)
C#MVC Razor的Ajax.BeginForm里面的OnSuccess未执行(未成功跳转),结合网上的说法,检查以下位置 1.引用Jquery,注意版本,网上说版本要低一点 <script ...
- Asp.net MVC razor语法参考
Razor语法的快捷参考http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/ 只是copy下来便于查阅! I ...
- mvc razor html.list,NetCore Web应用开发-HTML,C#,Razor补充
原标题:NetCore Web应用开发-HTML,C#,Razor补充 我了后续更深入学习Net MVC的需要,我们这一节需要对HTML,C#,Razor,BootStrap部分知识点做介绍. 我们先 ...
- ASP.NET MVC Razor视图引擎
本篇文章我们一起来讨论ASP.NET MVC框架中的Razor视图引擎.主要包含以下内容: Razor简介 Razor语法 Razor如何呈现页面 布局页(Layout) Razor简介 Razor是 ...
最新文章
- CentOS 安装Apache
- java 两个数交换问题
- 【Flutter教程】从零构建电商应用(一)
- win10设置禁止系统更新
- java实现订单物品计算佣金,java三角形、NextDay、佣金问题代码
- scala编程第16章学习笔记(3)——List类的高阶方法
- quartz mysql 驱动_quartz mysql 集成
- python中的颜色及其编码
- 拉杆音响电池升压芯片4.2V转12V2.5A大功率升压芯片
- spline: 计算机曲线简史(转载)
- win10调整鼠标滚轮方向
- MER 音乐情感识别-论文笔记7
- Python +大数据-知行教育(四)-意向用户主题看板_全量流程
- 2011推荐系统论坛游记:爱的反义词不是恨
- 测试工具和测试自动化
- 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解
- 2020-1-29 深度学习笔记5 - 机器学习基础(构建机器学习算法)
- 视频编解码(SPS重要参数)
- 蓝代斯克助力企业决胜现代化IT
- 大阪第63天——今天又数了一遍万年历
热门文章
- 文件句柄?文件描述符?傻傻分不清楚
- 分库、分表、分区的区别,傻傻分不清?
- SpringCloud的版本
- maven快照版本和发布版本
- Java线上应用故障排查之一:高CPU占用
- 多线程:了解一下ForkJoin、FutureTask、BlockingQueue
- 【Python】青少年蓝桥杯_每日一题_8.27_因数个数
- 【阿里云域名】我都有服务器了,为什么还要购买域名?
- oracle修改字段名称 试图删除被依赖列_oracle 添加 删除列 修改表名字 ;加注释 异常解释...
- 计算机二本生不学编程还能干什么6,不建议二本考生报考的6个专业,除非真的感兴趣!...