c#常用模板引擎Razor、Nveocity、TemplateEngine2.0、Vtemplate介绍 您所在的位置:网站首页 模板引擎渲染软件有哪些 c#常用模板引擎Razor、Nveocity、TemplateEngine2.0、Vtemplate介绍

c#常用模板引擎Razor、Nveocity、TemplateEngine2.0、Vtemplate介绍

2024-07-07 01:09| 来源: 网络整理| 查看: 265

NET 常用的模板引擎:Razor、Nveocity、TemplateEngine2.0、Vtemplate。

1.Razor模板引擎介绍 

Razor有VS自动提示。使用起来会方便一点。但是Razor大多是在MVC下使用的。非MVC下使用Razor需要借助开源的RazorEngine,我们就可以在非asp.net mvc项目中使用Razor引擎了。甚至在winform项目中都可以使用Razor(就可以写一些灵活度较高的代码生成器了)。

工作流程

Razor使用方法

1.导入DLL

clipboard[1]

2.创建cshtml

在非mvc项目中创建cshtml文件(cshtml文件可以用自动提示)

方法很简单,新建一个html,新建的时候改名为XX.cshtml即可。

clipboard[2]

像这样我们的前期准备工作就做完了!开始玩儿起来吧。

3.用c#语法在cshtml中写一个循环 

@{}中可以写C#代码,C#代码可以和html代码混排,

像下图这样写是可以的,让小编想起了做php的岁月。

clipboard[3]

4.在一般处理程序中读取

从开头的流程图得知,想让程序转起来,还得用Razor对象,读取一下cshtml。

让他形成一个程序集,再生成html。

图上画这绕,其实用起来并不太复杂。

像下图这样就可以了。

clipboard[4]

 

5)cshtml如何读取对象中的值

1)首先在一般处理程序中,调用Parse方法的时候多给一个参数。

这个参数,就是你在cshtml中想要读取对象。(理论上啥都行)

clipboard[5]

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 实验室设备网 版权所有