2009-02-20 5 views
5

Nous avons un tas de modèles NVelocity dans les ressources intégrées que nous utilisons pour les emails. Nous voulons déplacer ces modèles vers la base de données afin qu'ils puissent être facilement configurés par les utilisateurs.Est-ce que NVelocity ne prend plus en charge les modèles de chaîne?

Il semble que NVelocity (port Castle) ne supporte pas les chaînes comme modèles. Est-ce que quelqu'un sait comment le faire.

Pour être clair ce que je veux faire (la syntaxe peuvent être inexacts, je vais par la mémoire) ...

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

Répondre

15

Cela fonctionne pour moi:

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

Le manque de bonne documentation pour NVelocity est déprimant parce que c'est une bibliothèque puissante et utile. Il m'a fallu beaucoup trop de temps pour trouver votre réponse, j'ai donc marqué la question comme un favori pour référence future et voté votre réponse et la question. –

+0

Merci. Cependant, je pense que c'est une bonne idée de regarder d'autres moteurs de gabarit, car NVelocity est proche de l'abandon, assez lent et un peu trop restrictif. – Bergius

Questions connexes