使用T4模板动态生成邮件内容并储存到任意位置

使用T4模板动态生成邮件内容并储存到任意位置




一.基础概念介绍
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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值