NVelocity больше не поддерживает строковые шаблоны?

У нас есть набор шаблонов NVelocity во встроенных ресурсах, которые мы используем для электронной почты. Мы хотим переместить эти шаблоны в БД, чтобы пользователи могли их легко настраивать.

Однако похоже, что NVelocity (порт Castle) не поддерживает строки в качестве шаблонов. Кто нибудь знает как это сделать.

Чтобы было ясно, это то, что я хочу сделать (синтаксис может быть неточным, я иду по памяти) ...

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

person Kyle West    schedule 20.02.2009    source источник


Ответы (2)


Это работает для меня:

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() );
}
person Bergius    schedule 18.03.2009
comment
Отсутствие хорошей документации для NVelocity удручает, потому что это такая мощная и полезная библиотека. Мне потребовалось слишком много времени, чтобы найти ваш ответ, поэтому я пометил вопрос как избранный для использования в будущем и проголосовал за ваш ответ и вопрос. - person Bernhard Hofmann; 28.04.2011
comment
Спасибо. Тем не менее, я думаю, что было бы неплохо взглянуть на другие движки шаблонов, поскольку NVelocity близок к тому, чтобы отказаться от него, он довольно медленный и немного ограниченный. - person Bergius; 29.04.2011

После долгих самостоятельных исследований порт Castle для NVelocity, похоже, было бы огромным PITA, чтобы получить шаблон из строки в памяти.

С тех пор я отказался от NVelocity и начал использовать StringTemplate. В частности, эта реализация: http://websitelogic.net/articles/MVC/stringtemplate-viewengine-asp-net-mvc/

person Kyle West    schedule 22.02.2009