用于使用评估参数调用方法的NVelocity语法

时间:2010-07-14 22:54:15

标签: c# asp.net nvelocity

我有一个相当简单的模板,我需要从中进行方法调用。但是,NVelocity似乎没有评估本身是 NVelocity变量的方法参数。采用以下NVelocity模板:

#if (--- CONDITION SNIPPED ---)
    <blockquote class="column span-4">
          I MADE IT!
    </blockquote>
#else
    <blockquote class="column span-4">
         $extensionMethods.TestMethod(${var1})
</blockquote>       
#end

在上面的模板中,$extensionMethods作为一个类的实例传入,并且在传递评估的数字时非常有效(例如$extensionMethods.TestMethod(4)每次都有效)。但是,使用$var1会导致整个字符串按原样返回:$extensionMethods.TestMethod(${var1})

有没有办法懒惰地将变量传递给方法以使上述模板正确评估?

1 个答案:

答案 0 :(得分:3)

如果遇到问题,可能与您的变量类型或方法可用性有关。我已经构建并测试了以下内容:

public class TestClass
{
    #region Methods
    public string DoSomething(string name)
    {
        return name.ToUpperInvariant();
    }

    public string DoSomethingElse(int age)
    {
        return (age*10).ToString();
    }
    #endregion
}

我的模板:

#set($myVar = "matt")
#set($myVar2 = 10)

Name: $test.DoSomething(${myVar})
Age: $test.DoSomethingElse(${myVar2})

输出:

Name: "MATT"
Age: 100

我们可以看一些扩展方法的代码吗?