2009-02-20 10 views
5

Abbiamo un sacco di modelli NVelocity in risorse incorporate che usiamo per le email. Vogliamo spostare questi modelli nel DB in modo che possano essere facilmente configurati dagli utenti.NVelocity non supporta più i modelli di stringhe?

Sembra che NVelocity (porta Castello) non supporti stringhe come modelli. Qualcuno sa come farlo.

Per essere chiari questo è quello che voglio fare (sintassi può essere imprecise, vado a memoria) ...

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

risposta

15

Questo funziona per me:

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

La mancanza di una buona documentazione per NVelocity è deprimente perché è una libreria così potente e utile. Mi ci è voluto troppo tempo per trovare la risposta, quindi ho contrassegnato la domanda come preferita per riferimento futuro e ho votato la tua risposta e la domanda. –

+0

Grazie. Tuttavia, penso che sia una buona idea guardare altri motori di template, dato che NVelocity è quasi abbandonata, piuttosto lenta e un po 'troppo limitante. – Bergius

Problemi correlati