c#常用模板引擎Razor、Nveocity、TemplateEngine2.0、Vtemplate介绍 | 您所在的位置:网站首页 › 模板引擎渲染软件有哪些 › c#常用模板引擎Razor、Nveocity、TemplateEngine2.0、Vtemplate介绍 |
NET 常用的模板引擎:Razor、Nveocity、TemplateEngine2.0、Vtemplate。 1.Razor模板引擎介绍 Razor有VS自动提示。使用起来会方便一点。但是Razor大多是在MVC下使用的。非MVC下使用Razor需要借助开源的RazorEngine,我们就可以在非asp.net mvc项目中使用Razor引擎了。甚至在winform项目中都可以使用Razor(就可以写一些灵活度较高的代码生成器了)。 工作流程 Razor使用方法1.导入DLL 2.创建cshtml 在非mvc项目中创建cshtml文件(cshtml文件可以用自动提示) 方法很简单,新建一个html,新建的时候改名为XX.cshtml即可。 像这样我们的前期准备工作就做完了!开始玩儿起来吧。 3.用c#语法在cshtml中写一个循环 @{}中可以写C#代码,C#代码可以和html代码混排, 像下图这样写是可以的,让小编想起了做php的岁月。 4.在一般处理程序中读取 从开头的流程图得知,想让程序转起来,还得用Razor对象,读取一下cshtml。 让他形成一个程序集,再生成html。 图上画这绕,其实用起来并不太复杂。 像下图这样就可以了。
5)cshtml如何读取对象中的值 1)首先在一般处理程序中,调用Parse方法的时候多给一个参数。 这个参数,就是你在cshtml中想要读取对象。(理论上啥都行) 2)然后再cshtm中就可以找到这个对象了。 @Model.Age @Model.Name 可以把这段代码写在cshtml中,想在哪输出就在哪输出。 2.Nveocity模板引擎介绍 NVelocity功能非常强大,像很多的模板引擎一样,以特定的语法编写好模板,然后为模板提供数据源,最终就会渲染生成出想要文件,可以生成html、cs、java等文件,任何文件都可以生成,只需要配置写好固定的生成模板即可。 nvelocity下载地址:http://www.zhaodll.com/dll/n/201209/223477.html 找到NVELOCITY这一项进行下载即可。 建一个Application,名称随便取,然后在项目中添加Nvelocity的引用, 然后在项目里,添加一个文件夹并且命名为template,作为存放模板的目录,这与上面代码里设置的模板目录要对应一致,添加一个文件夹并且命名为Files,作为存放模板生成对应的文件。 VelocityEngine velocityEngine = new VelocityEngine(); ExtendedProperties props = new ExtendedProperties(); props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file"); //props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, HttpContext.Current.Server.MapPath(templatDir); props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, path); //props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Path.GetDirectoryName(HttpContext.Current.Request.PhysicalPath)); props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8"); props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8"); //模板的缓存设置 props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, true); //是否缓存 props.AddProperty("file.resource.loader.modificationCheckInterval", (Int64)30); //缓存时间(秒) velocityEngine.Init(props); //为模板变量赋值 VelocityContext context = new VelocityContext(); context.Put("Time", "20170613"); context.Put("Title", "模板生成"); context.Put("Body", "内容"); // Template template = velocityEngine.GetTemplate(@"D:\ProgrammingFolder\C#\NVelocityDemo\NVelocityDemo\bin\Debug\Template"); //从文件中读取模板 Template template = velocityEngine.GetTemplate("\\Value.vm"); //合并模板 using (StreamWriter writer = new StreamWriter(@"D:\ProgrammingFolder\C#\NVelocityDemo\NVelocityDemo\Files\123.java", false)) { template.Merge(context, writer); }后台代码,还要加入模板代码:
$Title
$Time
$Body NVelocity还可以将对象绑定进去,和上面context.Put("Time", "20170613");类似,只不过将"20170613"换为对象即可。所以说,想生成什么模板都可以满足。值得注意的是,NVelocity写模板的时候有固定的语法,语法去网上搜一下看看即可。 3.Template Engine模板引擎介绍 Template Engine主要是两个类在使用:Template 和TemplateManager,Template 是一个基本模板, TemplateManager是扩展的模板 语法介绍: Thank You for your order #order.billFirstName# #order.billLastName#. Your Order Total is: #format(order.total, "C")# Your order will arrive in 2-3 weeks Your order will arrive in 5-7 days 用Template或TemplateManager 是非常容易创建模板的 Template template = Template.FromString( string name, string data)Template template = Template.FromFile( string name, string filename)用TemplateManager TemplateManager mngr = new TemplateManager(Template template);或者 TemplateManager mngr = TemplateManager.FromFile( string filename);TemplateManager mngr = TemplateManager.FromString( string template);当调用FromString 方法时,string是模板的代码。这个方法能动态的加载文本到template中。FormFile是指调用的模板文件。 TemplateManager有个属性 SetValue可以用来设置模板的变量和变量的内容 mngr.SetValue( " xx " , " xxxxxxxxxxxxxx " );输出模板 Response.Write(mngr.Process());这一切都非常的简单。 函数列表 equals(obj1.obj2) 比较两个变量是否一样,返回bool型notequals(obj1,obj2)比较两个变量是否不一样,返回 bool型 也可以 not(equals(obj1,obj2))iseven(num) 测试是否是偶数isodd(num)测试是否奇数isempty(string) 测试字符串是否为0isnotempty(string) 测试字符串是否大于0isnumber(num) 测试是否为整型toupper(string) 转化成大写tolower(string) 转化成小写isdefined(varname) 测试变量是否有定义ifdefined(varname, value) 返回 value 如果varname 是有定义的, 特别有用:#ifdefined("name", name)# 将输出value 如果varname没有定义,其它情况不输出len(string)返回字符串长度tolist(collection, property, delim) 简单的输出列表例1: ArrayList list = new ArrayList();list.Add( " one " );list.Add( " two " );list.Add( " three " );template.SetValue( " mylist " , list); 你的模板内容: #toList(mylist, " & ")# 输出:one & two & three 例2: list.Add( new Customer( " Tom " , " Whatever " ));list.Add( new Customer( " Henry " , " III " ));list.Add( new Customer( " Tom " , " Jackson " ));template.SetValue( " mylist " , list);模板内容:#toList(mylist, "firstName", ",")# 输出:Tom,Henry,Tom 函数列表 snull(obj) 测试是否为空not(boolvalue) 返回not(!)的bool型iif(booleanExpression, iftruevalue, iffalsevalue) 如果booleanExpression为真,输出iftruevalue,否则输出iffalsevalueformat(object, formatstring)格式化字符串,相当于ToString(formatstring)例子: #format(total, "C")# will output: $1,208.45 函数列表 trim(string) 去除前后空格filter(collection, booleanproperty) 返回一个新的组所有符合booleanproperty要求的gt(obj1,obj2) 如果 obj1 > obj2 返回为真,否则为falselt(obj1,obj2) 如果 obj1 < obj2 返回为真,否则为falsecompare(obj1, obj2) 如果 obj1obj2 返回1or(bool1,bool2) 有一个为真返回就是trueand(bool1, bool2) 两个都为真时返回truecomparenocase(string1, string2) 相等时返回为true 否则为falsestripnewlines(string) 返回 所有\r\n 用space 代替的字符串typeof(object) 返回object 类型,如typeof("abcd234") 返回 "string" typeof(3) 返回 intcint(value) 返回整数 等同于Convert.toInt32()cdouble(value) 返回双精度cdate(value) 返回一个datetime 型createtypereference(type) 引用一个静态的类型,但格式必须是 |
CopyRight 2018-2019 实验室设备网 版权所有 |