2009-08-20 8 views
0

Ich erstelle E-Mails basierend auf eingebetteten NVelocity Templates und möchte etwas mit dynamisch enthaltenen Abschnitten tun. Also meine eingebettete Ressourcen sind so etwas wie folgt aus:NVelocity - #parse mit eingebetteten Ressourcen

DigestMail.vm _Document.vm _ActionItem.vm _Event.vm

Meine E-Mail-Routine wird eine Liste von Objekten erhalten und wird jede dieser zusammen mit dem Pass richtige Sicht auf DigestMail.vm:

public struct ItemAndView 
{ 
    public string View; 
    public object Item; 

} 

private void GenerateWeeklyEmail(INewItems[] newestItems) 
{ 
    IList<ItemAndView> itemAndViews = new List<ItemAndView>(); 
    foreach (var item in newestItems) 
    { 
     itemAndViews.Add(new ItemAndView 
     { 
      View = string.Format("MyAssembly.MailTemplates._{0}.vm", item.GetType().Name), 
      Item = item 
     }); 
    } 

    var context = new Dictionary<string, object>(); 
    context["Recipient"] = _user; 
    context["Items"] = itemAndViews; 

    string mailBody = _templater.Merge("MyAssembly.MailTemplates.DigestMail.vm", context); 
} 

Und in meinem DigestMail.vm Vorlage ich habe so etwas wie dieses bekam:

#foreach($Item in $Items) 
==================================================================== 
#parse($Item.viewname) 
#end 

Aber es kann nicht parsen, wenn der Pfad zu einer eingebetteten Ressource wie diesem angegeben wird. Gibt es eine Möglichkeit, dass ich jedem dieser eingebetteten Vorlagen erklären kann?

Antwort

0

Hey Jake, ist .viewname eine Eigenschaft? Ich bin nicht sehen Sie es in Ihrem Code einstellen, wie über Sie verwenden die folgenden:

#foreach($Item in $Items) 
==================================================================== 
$Item.viewname 
#end 

Ich weiß nicht, warum Sie die $ Item.viename sind Parsen und nicht nur die oben mit? Ich schlage das vor, weil ich gerade nie etwas analysieren musste!

Bitte beachten Sie this Post, wo wir die Generierung von Vorlagen diskutiert haben.

Hoffe, das hilft!

1

Ich würde eine Hilfsmethode tun und InPlace die in Resource gespeicherten Ansicht gerendert und eine Zeichenfolge zurückgegeben, die angezeigt wird. Etwas wie in diesem Thema hier Template in monorail ViewComponent