2009-02-20 32 views
5

私たちは電子メールに使用する埋め込みリソースにNVelocityテンプレートをたくさん用意しています。これらのテンプレートをDBに移動して、ユーザーが簡単に設定できるようにしたいと考えています。NVelocityは文字列テンプレートをサポートしていませんか?

NVelocity(キャッスルポート)は文字列をテンプレートとしてサポートしていないようですが、誰もそれを行う方法を知っていますか? NVelocityの城ポートはのように思える自分で多くの研究の後

これは私が(構文が、私はメモリによってつもり不正確な場合があります)何をしたいです明確にする...

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

答えて

15

これが私の作品:

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

それは、このような強力で有用なライブラリだからNVelocityのための良いドキュメントの欠如が憂鬱です。私はあなたの答えを見つけ出すには余りにも長い時間を要したので、私はこの質問を将来の参考のためにお気に入りとしてマークし、あなたの答えと質問に投票しました。 –

+0

ありがとうございます。しかし、NVelocityは放棄されている、非常に遅く、制限が余りにもあるので、他のテンプレートエンジンを見るのは良い考えだと思います。 – Bergius

関連する問題