Nvelocity-尝试“大于”小数属性比较时的模板问题
-
22-09-2019 - |
题
我有一个简单的对象,该对象是其属性之一,该属性是十进制数量的数量。当我尝试将此属性作为NVelocity模板的一部分进行比较时,比较总是失败。如果我将属性更改为int类型,则比较效果很好。我需要添加一些额外的模板以进行比较吗?
以下是上述模板中的样本:
#foreach( $bet in $bets )
<li>
$bet.Date $bet.Race
#if($bet.Amount > 10)
<strong>$bet.Amount.ToString("c")</strong>
#else
$bet.Amount.ToString("c")
#end
</li>
#end
以下是BET类:
public class Bet
{
public Bet(decimal amount, string race, DateTime date)
{
Amount = amount;
Race = race;
Date = date;
}
public decimal Amount { get; set; }
public string Race { get; set; }
public DateTime Date { get; set; }
}
任何帮助将不胜感激。
解决方案
我对此进行了测试,它起作用了. 。似乎这是一个错误,在最新版本的Nvelocity(截至撰写本文时1.1)中不再存在。
其他提示
当然。
完整的nvelocity模板:
<div>
Bet summary:
<ul>
#foreach( $bet in $bets )
<li>
$bet.Date $bet.Race
#if($bet.Amount > 10)
<strong>$bet.Amount.ToString("c")</strong>
#else
$bet.Amount.ToString("c")
#end
</li>
#end
</ul>
</div>
BET类:
public class Bet
{
public Bet(decimal amount, string race, DateTime date)
{
Amount = amount;
Race = race;
Date = date;
}
public decimal Amount { get; set; }
public string Race { get; set; }
public DateTime Date { get; set; }
}
程序:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Commons.Collections;
using NVelocity.App;
using NVelocity;
using NVelocity.Runtime;
namespace nVelocityTest
{
public class Program
{
private static void Init()
{
var props = new ExtendedProperties();
props.AddProperty(RuntimeConstants_Fields.FILE_RESOURCE_LOADER_PATH, @"C:\dev\RnD\nVelocity\nVelocityTest\nVelocityTest\EmailTemplates");
Velocity.Init(props);
}
static void Main()
{
Init();
ICollection<Bet> bet = new Collection<Bet> { new Bet(10, "Banana Race", DateTime.Now), new Bet(15, "Potatoe Race", DateTime.Now) };
GenerateBetSummaryEmail(bet);
}
private static void GenerateBetSummaryEmail(ICollection<Bet> bets)
{
var context = new VelocityContext();
context.Put("bets", bets);
var writer = new System.IO.StringWriter();
try
{
Velocity.MergeTemplate("BetConfirmationEmailTemplate.vm", context, writer);
}
catch (Exception e)
{
Console.WriteLine("Problem merging template : " + e);
}
var outputTest = writer.GetStringBuilder().ToString();
}
}
}
预期输出测试:
以下是您的BET摘要:
- 25/03/2010 9:21:15 AM香蕉种族$ 10.00
- 25/03/2010 9:21:15 AM马铃薯种族 $15.00
实际输出测试:
以下是您的BET摘要:
- 25/03/2010 9:21:15 AM香蕉种族$ 10.00
- 25/03/2010 9:21:15 AM土豆种族$ 15.00
如前所述,Nvelocity模板中的比较#if($ bet.amount> 10)失败了,尽管在第二个BET对象中,BET.Amount的值为15.如果将金额更改为类型INT,则比较按预期工作。
不隶属于 StackOverflow