抛弃NVelocity,来玩玩Razor2015-12-09 cnblogs 一线码农对于内容型,不易变动的东西我们都希望给它来个静态化,还有种情况就是比如新浪云不支持.net,为了能跑起我们的网站,只能放些静态页面上面,外加jsonp来实现交互,我们知道.net中有很多模板引擎,但都不是原装的,所以基本都没有代码提示,用起来比较不爽,自razor出来后,私活中也抛弃了原先使用的NVelocity,而采用原装的razor。好了,我们先看看怎么玩,首先我们去codeplex上下两个dll。http://razorengine.codeplex.com/

我想razor语法,大家都已经滚瓜烂熟了,不过我快一年都没接触mvc了,也忘了差不多了,就简单介绍一些吧~~~一般来说,只要razor支持四样特性,80%的功能都可以完成。一:简单的占位符替换由于太简单了,就不花力气从cshtml文件中读取了,而用字符串替代。

怎么样,简单的占位符替换是不是很简单,比那些{0},{1}是不是更有语意化一些~二:能实现的if,foreach等流程控制语句先看看在模板中怎么玩,最最关键的是有代码提示,完完全全是我们熟悉的C#语法
<!DOCTYPE html> <html lang="en"> <head><meta charset="utf-8" />@* 看看if语句怎么玩 *@@if (DateTime.Now.Hour == 23){<title>你好,现在是午夜</title>}else{<title>现在时间是:@DateTime.Now.ToString()</title>}</head> <body><ul>@* 看看foreach语句怎么玩 *@@foreach (var item in @Model.StudentList){<li>@item.Name</li>}</ul></body></html>
再看看后台C#代码
class Program{static void Main(string[] args){string path1 = Environment.CurrentDirectory + "../../../index.cshtml"; var index = System.IO.File.ReadAllText(path1, Encoding.GetEncoding("GBK")); var list = new List<Student>(){ new Student(){ Name="张三" }, new Student(){ Name="李四" }, new Student(){ Name="王五" },}; var result = Razor.Parse(index, new { StudentList = list }); }} public class Student{public string Name { get; set; }}