• 使用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="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

  • 相关阅读:
    如何使用Vue原生组件编译应用程序主题?这个工具不要错过
    BTC系统中具体的区块信息
    hash(哈希)
    比特币共识协议
    计算多分类softmax的loss function
    逻辑回归0.环境设定
    分布式共识
    Hash pointer(哈希指针)
    数字货币中经常出现的问题
    比特币激励机制
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/8685999.html
Copyright © 2020-2023  润新知