zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    pytorch-卷积基本网络结构-提取网络参数-初始化网络参数
    pytorch-mnist神经网络训练
    python 面对对象 类(继承, 多态)
    注意机制CBAM
    python sqlalchemy 进行 mysql 数据库操作
    python pymysql 连接 mysql数据库进行操作
    mysql数据库基础
    python正则表达式解析(re)
    python 装饰器 (test = submit(test))
    对opencv读取的图片进行像素调整(1080, 1920) 1.cv2.VideoCapture(构造图片读取) 2.cv2.nameWindow(构建视频显示的窗口) 3.cv2.setWindowProperty(设置图片窗口的像素) 4.video_capture(对图片像素进行设置)
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/8685999.html
Copyright © 2011-2022 走看看