2009-08-20 24 views
0

埋め込みNVelocityテンプレートに基づいて電子メールを生成しており、動的に含まれるセクションで何かしたいと思います。だから私の埋め込まれたリソースは、このようなものです:NVelocity - 組み込みリソースを使用した#parse

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することはできません。これらの埋め込まれたテンプレートのそれぞれを解析する方法を教えてください。

答えて

0

こんにちはジェイク、。ビュー名はプロパティですか?私はあなたについて、以下を使用する方法、あなたのコードでそれを設定見ていないよ:

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

あなたは$ Item.vienameを解析するだけではなく、上記を使用している理由を私は知らないのですか?私は何かを解析する必要が全くないので、これを提案しています!

テンプレートの生成については、this投稿を参照してください。

希望すると便利です。

1

私はヘルパーメソッドを実行し、リソースに格納されたビューをInPlaceでレンダリングし、表示される文字列を返しました。このトピックのようなもの Template in monorail ViewComponent

関連する問題