使用T4模板動態生成郵件內容並儲存到任意位置
阿新 • • 發佈:2018-04-01
processor net 下載 位置 sta http lte 擴展 span
一.基礎概念介紹
T4模板是擴展名為 .tt 的文本文件。 他分為設計時模板 和運行時模板。主要區別在於在vs中右鍵點擊文件,打開“屬性”,在“自定義工具”一欄中的值分別如下:
設計時模板: TextTemplatingFileGenerator
運行時模板:TextTemplatingFilePreprocessor
二.模板轉換
當然設計時模板可以轉為運行時模板,只要將該文件的“自定義工具”屬性設置為 TextTemplatingFilePreprocessor即可。
但是運行時模板很多情況下不能轉為設計時模板。
三.運行時模板的使用
這裏講解通過C#代碼來控制,何時執行T4模板來產生郵件內容,並儲存到指定的位置。
1.添加一個T4模板,修改為運行時模板
MultiArticle.tt
<#@ template language="C#" #> <div style="text-align:center;"> <table width="600" cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;"><tbody><tr><td> <div style="width:600px;text-align:left;font:12px/15px simsun;color:#000;background:#fff;"> <h1><#=Subject #></h2> <table> <# foreach(Article item in ArticleList) { #> <tr><td> <#= item.Title #> </td><td> <#= item.Content #> </td></tr> <# } #> </table> </div> </td></tr></tbody></table> </div>
2.這個模板需要一個實體類表示郵件的內容
一個是以模板名+code結尾:MultiArticleCode.cs,註意類名與模板名要相同,都是MultiArticle。
public class Article { public string Title { get; set; } public string Content { get; set; } } public partial class MultiArticle { public string Subject { get; set; } public List<Article> ArticleList { get; set; } public MultiArticle(string subject, List<Article> articles) { Subject = subject; ArticleList = articles; } }
3.動態執行
static void Main(string[] args) { string subject="最新消息"; var artList=new List<Article>(); for (int i = 0; i < 4; i++) { Article art = new Article(); art.Title = "標題"+i+":"+Guid.NewGuid(); art.Content = "內容" +i+ ":" + Guid.NewGuid(); artList.Add(art); } MultiArticle mod=new MultiArticle(subject,artList); //TransformText方法是模板編譯時自動產生的, //這也是前面有提到的,模板MultiArticle.tt的命名要與MultiArticleCode.cs中的類名相同的原因, //利用分部類partial,就可以調用該TransformText方法了。 String pageContent = mod.TransformText(); //將pageContent保存到任何你想保存的地方 System.IO.File.WriteAllText("outputPage.html", pageContent, Encoding.UTF8); }
項目源碼下載:
http://download.csdn.net/download/manimanihome/9667483
使用T4模板動態生成郵件內容並儲存到任意位置