5

メールに使用する埋め込みリソースには、多数のNVelocityテンプレートがあります。これらのテンプレートをDBに移動して、ユーザーが簡単に構成できるようにします。

NVelocity(Castleポート)はテンプレートとして文字列をサポートしていないようです。誰かがそれを行う方法を知っていますか?

明確にするために、これは私がやりたいことです(構文は不正確かもしれません、私は記憶によって行きます)...

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

2 に答える 2

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() );
}
于 2009-03-18T13:52:49.643 に答える
0

私自身で多くの調査を行った結果、NVelocity のキャッスル ポートは、メモリ内の文字列からテンプレートを取得するのは非常に PITA になるようです。

それ以来、NVelocity をあきらめて、StringTemplate を使い始めました。特にこの実装: http://websitelogic.net/articles/MVC/stringtemplate-viewengine-asp-net-mvc/

于 2009-02-22T01:11:37.230 に答える