1、NVelocity是什么?

答:NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象。


2、NVelocity有什么作用(有什么裨益)?

答:当NVelocity 应用于Web开发时,界面设计人员和.NET程序开发人员同步开发一个遵守MVC架构的Web站点,也就是说页面设计人员可以只关注页面的显示效果,而由.NET 开发人员关注业务逻辑编码。NVelocity将.NET 代码从Web界面中分离出来,这样为Web站点的长期维护提供了方便,同时也为我们在aspx之外又提供了一种可选方案。

NVelocity的能力远不止Web站点开发这个领域,例如:它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立的工具来产生源代码和报告,或者作为其他系统的集成组件使用。

nVelocity也可以为很多web开发架构提供模板服务(template service)。我们的系统就提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

3、我们如何使用NVelocity?




.Net之NVelocity的三种用法 【转】


usingNVelocity;
usingNVelocity.App;
usingNVelocity.Runtime;

VelocityEnginevltEngine=newVelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER,"file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,Server.MapPath("~/Template/"));
vltEngine.Init();

VelocityContextvltContext=newVelocityContext();
vltContext.Put("PageTitle","文件模板例子");
vltContext.Put("ListUsers",listUsers);

TemplatevltTemplate=vltEngine.GetTemplate("Default.htm");
System.IO.StringWritervltWriter=newSystem.IO.StringWriter();
vltTemplate.Merge(vltContext,vltWriter);

Response.Write(vltWriter.GetStringBuilder().ToString());

NVelocity 使用资源文件模板例子

例子下载

usingNVelocity;
usingNVelocity.App;
usingNVelocity.Runtime;

IList<string>listAssembly=newList<string>();
//添加程序集名称
listAssembly.Add("LibTest");

VelocityEnginevltEngine=newVelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER,"assembly");
vltEngine.SetProperty("assembly.resource.loader.class","NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader;NVelocity");//固定写法--!
vltEngine.SetProperty("assembly.resource.loader.assembly",listAssembly);
vltEngine.Init();

VelocityContextvltContext=newVelocityContext();
vltContext.Put("PageTitle","资源模板例子");
vltContext.Put("ListUsers",listUsers);

TemplatevltTemplate=vltEngine.GetTemplate("LibTest.Resources.Default.htm");
System.IO.StringWritervltWriter=newSystem.IO.StringWriter();
vltTemplate.Merge(vltContext,vltWriter);

Response.Write(vltWriter.GetStringBuilder().ToString());

NVelocity 使用字符串模板例子

例子下载

usingNVelocity;
usingNVelocity.App;
usingNVelocity.Runtime;

System.Text.StringBuilderbuilder=newSystem.Text.StringBuilder();
builder.Append("#foreach(uinListUsers)"r"n"+
"#beforeall"r"n"+
"<tableborder=""0""cellpadding=""10""cellspacing=""10"">"+
"<tr><td>Name</td><td>Sex</td><td>City</td></tr>"+
"#each"r"n"+
"<tr>"+
"<td>$u.Name</td>"+
"<td>$u.Sex</td>"+
"<td>$u.City</td>"+
"</tr>"+
"#afterall"r"n"+
"</table>"+
"#nodata"r"n"+
"暂无用户资料"r"n"+
"#end");

VelocityEnginevltEngine=newVelocityEngine();
vltEngine.Init();

VelocityContextvltContext=newVelocityContext();
vltContext.Put("PageTitle","字符串模板例子");
vltContext.Put("ListUsers",listUsers);

System.IO.StringWritervltWriter=newSystem.IO.StringWriter();
vltEngine.Evaluate(vltContext,vltWriter,null,builder.ToString());

Response.Write(vltWriter.GetStringBuilder().ToString());