最近利用NVelocity+MVC进行开发过程中,发现NVelocity没有四舍五入的函数,利用js进行页面处理又太慢,如果可以调用.NET类的方法就太完美了。
于是Google了一下,发现篇Velocity调用Java代码的文章:
velocity模板开发中减法 加法
既然NVeclocity是从Velocity来的,自然少不了这个功能了,于是将ASP.NET的代码修改如下:
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());
由于C#的System.Math是静态类型,不能实例化赋值给模板标签$MathTool,于是给包装了一下,实例化了个MathTool类封装了Round方法,于是将它的实例赋值给模板标签MathTool
模板代码调用代码如下:
$MathTool.Round($order.UnitPrice,2)
另外NVelocity也可以调用.NET的String类型的方法,例如String类型的CutString方法
代码如下:
$Str.Cutstring(0,20) 截取20个字符