VTemplate模版引擎的使用--进阶篇
2010-09-30 20:52:25 来源:WEB开发网我叫{$:user.name},今年{$:user.age}岁,我来自{$:user.location.getcity()}
假如对user变量赋以下类实例的值,那么上面模版代码解析时模版引擎将能正确解析出各个变量表达式的最终值。
class Location
{
public string GetCity(){
//code here
}
}
class User
{
public string Name { get; set; }
public int Age { get; set; }
public Location Location { get; set; }
}
但在某些情况下,我们需要获取的“值”并不简单地存在变量值的类型中,而是需要经过其它处理运算得出来的值。比如上面的获取个人资料里,我们还要获取用户的个人财产总额,但从上面的代码里可看出个人财产总额项并不存在于User类里,所以导致VT模版引擎根本无法获取此项的值。那我们要如何做才能获取此项数据呢?VT模版引擎提供了一个手动设置变量表达式的值的方法,而我们要做的就是根据此方法手动设置变量表达式的值!例如上面的VT模版代码改为如下:
我叫{$:user.name},今年{$:user.age}岁,我来自{$:user.location.getcity()},我的个人财产总共有{$:user.totalmoney}元。
从上面的类实例代码中可知道totalmoney这个项是不存在User的属性/字段列表里的,所以我们就要手动设置{$:user.totalmoney}的值,示例代码如下:
/// <summary>
/// 返回某个用户的个人财产总额
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
static int GetUserTotalMoney(User user)
{
//code here
}
//------------------------使用代码----------------------------------------//
//获取user变量
Variable userVar = this.Document.Variables["user"];
//生成User实例
User user = new User();
//…………其它代码略去…………//
//设置user变量的值为User实例
userVar.Value = user;
//手动设置totalmoney的值(注意,这行和上面那行的顺序不能搞乱)
userVar.SetExpValue("totalmoney", GetUserTotalMoney(user));
更多精彩
赞助商链接