VTemplate模版引擎的使用--进阶篇
2010-09-30 20:52:25 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹

我叫{$: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));
更多精彩
赞助商链接