我有一个相当简单的模板,我需要从中进行方法调用。然而,NVelocity 似乎并没有评估方法参数本身 NV速度变量. 。采用以下 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}).

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

有帮助吗?

解决方案

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top