我正在根据嵌入式 NVelocity 模板生成电子邮件,并希望对动态包含的部分做一些事情。所以我的嵌入式资源是这样的:
DigestMail.vm _Document.vm _ActionItem.vm _Event.vm
我的电子邮件例程将获得一个对象列表,并将其中的每一个与正确的视图一起传递给 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);
}
在我的 DigestMail.vm 模板中,我有这样的东西:
#foreach($Item in $Items)
====================================================================
#parse($Item.viewname)
#end
但是当给定这样的嵌入式资源的路径时,它无法#parse。有什么方法可以告诉它解析每个嵌入的模板吗?