0

埋め込まれた 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 できません。これらの埋め込まれたテンプレートのそれぞれを解析するように指示する方法はありますか?

4

1 に答える 1

0

ジェイクさん、.viewnameはプロパティですか?私はあなたがあなたのコードでそれを設定しているのを見ていません、あなたは以下を使うのはどうですか:

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

上記を使用するのではなく、なぜ$ Item.vienameを解析しているのかわかりませんか?私は何かを解析する必要がなかったので、これを提案しています!

テンプレートの生成について説明したこの投稿を参照してください。

お役に立てれば!

于 2010-01-22T08:46:04.907 に答える