[原创]nvelocity模板调用.NET类的方法代码

最近利用NVelocity+MVC进行开发过程中,发现NVelocity没有四舍五入的函数,利用js进行页面处理又太慢,如果可以调用.NET类的方法就太完美了。

于是Google了一下,发现篇Velocity调用Java代码的文章:

velocity模板开发中减法 加法

既然NVeclocity是从Velocity来的,自然少不了这个功能了,于是将ASP.Net的代码修改如下:
[csharp]
public class MatchTool

{

/// <summary>

/// 四舍五入

/// </summary>

/// <param name="d"></param>

/// <param name="decimals"></param>

/// <returns></returns>

public Decimal Round(decimal d, int decimals)

{

return System.Math.Round(d,decimals);

}

}

//添加C#的Math数字计算实例给模板用于四舍五入

AddContext("MathTool",new MatchTool());[/csharp]

由于C#的System.Math是静态类型,不能实例化赋值给模板标签$MathTool,于是给包装了一下,实例化了个MathTool类封装了Round方法,于是将它的实例赋值给模板标签MathTool

模板代码调用代码如下:

$MathTool.Round($order.UnitPrice,2)

另外NVelocity也可以调用.NET的String类型的方法,例如String类型的CutString方法

代码如下:

$Str.Cutstring(0,20) 截取20个字符