2009-02-20 5 views
5

우리는 전자 메일 용으로 사용되는 리소스에 다양한 NVelocity 템플릿을 가지고 있습니다. 우리는 사용자가 쉽게 구성 할 수 있도록 이러한 템플릿을 DB로 이동하려고합니다.NVelocity는 더 이상 문자열 템플릿을 지원하지 않습니까?

NVelocity (캐슬 포트)는 문자열을 템플릿으로 지원하지 않지만 표시됩니다. 아무도 그것을하는 방법을 알고 있습니다. NVelocity의 성 포트는 것 같아 내 자신에 대한 많은 연구 후

이 내가 (문법, 나는 메모리에 의해거야 정확하지 않을 수 있습니다)하고 싶은 것입니다 명확하게하려면 ...

string templateString = "Hello $!user"; 
Template template = new Template(templateString); 
string results = template.Merge(....); 

답변

15

이 나를 위해 작동합니다 : 그것은 같은 강력하고 유용한 라이브러리 때문에 NVelocity에 대한 좋은 문서의 부족은 우울

using System.Collections; 
using System.IO; 
using NUnit.Framework; 
using NVelocity; 
using NVelocity.App; 

[Test] 
public void StringParsing() 
{ 
    var h = new Hashtable { 
     { "foo", "Template" }, 
     { "bar", "is working" }, 
     { "foobar", new[] { "1", "2", "3" } } }; 
    Velocity.Init(); 
    var c = new VelocityContext(h); 
    var s = new StringWriter(); 
    Velocity.Evaluate(c, s, "", 
     "$foo $bar: #foreach ($i in $foobar)$i#end"); 
    Assert.AreEqual("Template is working: 123", s.ToString()); 
} 
+0

. 당신의 대답을 찾기에는 너무 오래 걸렸습니다. 그래서 나는 미래의 참고 문헌으로 좋아할만한 질문으로 답을하고 답을 뽑았습니다. –

+0

감사합니다. 그러나 NVelocity는 버려지고, 느리고, 제한이 너무 가깝기 때문에 다른 템플릿 엔진을 살펴 보는 것이 좋습니다. – Bergius

관련 문제