使用T4模板动态生成邮件内容并储存到任意位置
一.基础概念介绍
T4模板是扩展名为 .tt 的文本文件。 他分为设计时模板 和运行时模板。主要区别在于在vs中右键点击文件,打开“属性”,在“自定义工具”一栏中的值分别如下:
设计时模板: TextTemplatingFileGenerator
运行时模板:TextTemplatingFilePreprocessor
二.模板转换
  当然设计时模板可以转为运行时模板,只要将该文件的“自定义工具”属性设置为 TextTemplatingFilePreprocessor即可。
  但是运行时模板很多情况下不能转为设计时模板。
三.运行时模板的使用
这里讲解通过C#代码来控制,何时执行T4模板来产生邮件内容,并储存到指定的位置。
1.添加一个T4模板,修改为运行时模板
MultiArticle.tt
<#@ template language="C#" #>
<div style="text-align:center;">
<table width="" cellpadding="" cellspacing="" border="" 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 = ; i < ; 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模板动态生成邮件内容并储存到任意位置的更多相关文章
- 使用T4模板动态生成NPoco实体类
		
这是一个妥妥的NPoco类,这是我们在工作开发中,手动去写这个实体类,属实非常心累,字段少无所谓一次两次,数量多了,字段多了,就心态裂开
 - 使用Razor视图引擎来生成邮件内容
		
邮件的内容其实是就HTML,传统的做法都是通过在程序中拼接字符串来生成邮件的内容,生成困难,维护也困难.Razor是MVC里面使用的视图引擎,用来生成HTML非常方便,ZKEACMS中就是使用了Raz ...
 - JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
		
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
 - 【转】- 使用T4模板批量生成代码
		
前言 之前在 “使用T4模板生成代码 - 初探” 文章简单的使用了T4模板的生成功能,但对于一个模板生成多个实例文件,如何实现这个方式呢?无意发现一个解决方案 “MultipleOutputHelpe ...
 - PetaPoco T4模板修改生成实体
		
PetaPoco T4 模板生成的实体类全部包含再一个.CS文件中.通过修改PetaPoco的T4模板,生成单文件实体. 1.生成单CS文件模板: SigleFile.ttinclude <#@ ...
 - T4 模板自动生成带注释的实体类文件
		
T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll 生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 如果你没有 ...
 - T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll
		
生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文 ...
 - FluentData-新型轻量级ORM  利用T4模板 批量生成多文件 实体和业务逻辑 代码
		
FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.Model 利用T4模板,[MultipleOutputHelper.ttinclude]批量生成多文件 ...
 - 前端基于react,后端基于.net core2.0的开发之路(番外篇) 后端使用T4模板,生成某些类
		
1.介绍 因为开发过程中,有部分类是你加一个模型,就需要去改动的,每次加非常的烦,或者有些类,你只用到了他基类的方法,但是你还必须建一个文件才能调用他基类的方法,也很烦. 这个时候,T4就非常有用了. ...
 
随机推荐
- js获取数组中相同元素数量
			
<script> var array = new Array(1,2,5,1,4,4,2,3,5,1,1,5,5,5,6,7,3,9,9,10); var arr = new Array( ...
 - flutter 动画双指放大图片
			
class GridAnimation extends StatefulWidget { @override State<StatefulWidget> createState() { r ...
 - hive  JDBC客户端启动
			
JDBC客户端操作步骤
 - java学习之—栈
			
/** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackX { private int ...
 - springboot的几种启动方式
			
一:IDE 运行Application这个类的main方法 二:在springboot的应用的根目录下运行mvn spring-boot:run 三:使用mvn install 生成jar后运行 先到 ...
 - mktemp -t -d用法
			
mktemp命令用于建立暂存文件或者文件夹,帮助文档如下: Usage: mktemp [OPTION]... [TEMPLATE] Create a temporary file or direct ...
 - 只要访问url地址 那么容器就会根据地址进行对象的创建
			
只要访问url地址 那么容器就会根据地址进行对象的创建
 - Nginx 磁盘IO的优化
			
L:132
 - 实验吧 WEB 头有点大
			
看到了良心的提示,http header,之后看到了要求.NET framework 9.9 英国 IE,我想想.NET好像还没有更新到9.9,就无视了这重要的提示. 我就看了一眼题解,发现burps ...
 - jsp页面中 <%%> <%! %>, <%=%> <%-- --%>有什么区别
			
<%%> 可添加java代码片段 <%! %> 可添加java方法 <%=%> 变量或表达式值输出到页面 <%-- --%&g ...