Razor模板引擎 (RazorEngine)
Razor模板引擎不仅在ASP.NET MVC中内置了Razor模板引擎,还有一个开源的RazorEngine,
这样以来我们可以在非ASP.NET MVC项目中使用Razor引擎,甚至在控制台,WinForm项目中都可以使用。
文件的创建
文件是一个后缀名为cshtml的文件,如果在非MVC项目中创建Razor文件,可以新建一个html,把后缀名该为cshtml。
RazorEngine使用初体验
一、前台:
/// <summary> /// 自己封装一个Razor.Parse()方法 /// </summary> /// <param name="context">上下文对象</param> /// <param name="cshtmlPath">.cshtml文件的相对路径</param> /// <param name="obj">要传入的对象参数</param> /// <returns>返回一个解析过的Razor模板字符串</returns> private string RazorParse(HttpContext context, string cshtmlPath,params object[] obj) { //获得.cshtml文件的绝对路径 string path = context.Server.MapPath(cshtmlPath); //通过路径将文件读成文本 string txt = File.ReadAllText(path); //为模板准备一个缓冲,根据文件的修改时间动态组合 string cacheName = path + File.GetLastWriteTime(path); //根据需求是否要传入对象参数,在调用Razor.Parse方法返回解析好的Razor模板 return obj.Length > 0 ? RazorEngine.Razor.Parse(txt, obj[0], cacheName) : RazorEngine.Razor.Parse(txt, cacheName); }View Code
HtmlEncodeString()方法
在往模板传入字符串的格式,如果为html格式,该方法会将其转义,在模板显示字符串本身,而不会被模板解析为html标签
代码:
public static HtmlEncodedString Test1()
{
return new HtmlEncodedString("<input type='text' />");
}
RawString()方法
可以将类似于html的字符串,传入前台模板,可以被解析标签相应的含义
代码:
public static RawString Test2()
{
return new RawString("<input type='text' />");
}
Razor模板调用外部方法(在.cshtml模板页上调用在后台用C#写好的一个方法)
1.在.cshtml顶部引入方法的命名空间
@using 命名空间名称
2.调用
@类名.方法() ,不需要";"号。 如:@Handler1.Test1()
业务实例
通过外部方法生成一个Checked标签
public static RawString CreateChecked_input(string id,bool isChecked) { StringBuilder sb = new StringBuilder(); sb.Append("<input type='checkbox' id=" + id).Append(" checked="+ (isChecked==true?"checked":"")).Append(" />"); return new RawString(sb.ToString()); }
调用
@using Demo.Razor <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> @Handler1.CreateChecked_input("t1", true) </body> </html>
总结:因为在后台很多数据时动态读取数据库的信息而组成的,将繁琐的拼接封装在后台,前台页面清晰,而封装的方法还可以重复利用到其他业务中
- C#模板引擎 RazorEngine3.7的简单使用
- C#模板引擎 RazorEngine3.7的扩展 — 引入外部文件
- C#模板引擎 RazorEngine3.7的扩展 — 引用布局页
- 理解模板引擎Razor 的原理(转载)
- web项目下,甩开RazorTemplateEngine做模板处理
- MVC3 Razor模板引擎
- Velocity基于java的模板引擎(template engine)
- 为ASP.NET MVC 2.0添加Razor模板引擎 (on .NET4)
- vs2010 mvc3创建的razor引擎模板页,子页面引用后出现当前上下文中不存在名称“ViewBag”
- MVC3 Razor模板引擎 @RenderBody、@RenderPage、@RenderSection
- ASP.NET MVC的Razor引擎:RazorViewEngine
- 理解模板引擎Razor 的原理
- 推荐一个模板引擎 - templateengine
- node template engine节点模板引擎
- ASP.NET Razor模板引擎中输出Html的两种方式
- Razor 也可说是一个模板引擎,用不着学习 T4 了
- MVC3 Razor模板引擎
- 如何选择Javascript模板引擎(javascript template engine)?
- 模版引擎RazorEngine简介
- 为ASP.NET MVC 2.0添加Razor模板引擎 (on .NET4)