使用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就非常有用了. ...
随机推荐
- Airflow 使用随笔(内含 TimeZone 和 Backfill 等的详解)
其实怎么部署 airflow 又哪些特性,然后功能又是如何全面都可以在 Reference 的文章里面找到,都不是重点这里就不赘述了. 这里重点谈一下我在部署完成仔细阅读文档之后觉得可以总结的一些东 ...
- Visual Studio 2017调试开源项目代码
在我们的开发过程中很多时候我们会从GitHub上面下载一些开源的项目代码,然后在此基础上进行调试,正常情况下我们只需要将项目的源代码编译成Dll或者在.Net Core项目中直接引用相应的Nuget包 ...
- WPF中自定义MarkupExtension
在介绍这一篇文章之前,我们首先来回顾一下WPF中的一些基础的概念,首先当然是XAML了,XAML全称是Extensible Application Markup Language (可扩展应用程序标记 ...
- nginx worker_processes 配置
搜索到原作者的话:As a general rule you need the only worker with large number ofworker_connections, say 10,0 ...
- centOS 开机自启动自己的脚本
centOS 开机自启动自己的脚本 1. 自己脚本 myservice 如下: #!/bin/bash # chkconfig: # description: myservice .... echo ...
- 日历插件bootstrap-datetimepicker的使用感悟
首先队长先综述一下插件的使用三步流程:即 1.引入插件 2.使用jquery选择器选择目标标签 3.对目标标签绑定插件函数来触发插件 雷同于python中的库的使用(安装库 导入库 引用库) 下面 ...
- sql left join多表
表A---------------------------------关联第一张表B-----------------------关联第二张表c select * fomr 表名A left join ...
- Web API 2 使用SSL
在Server上启用SSL 稍后我会想在IIS 7 上配置SSL,现在先往下看. 本地测试,您可以启用SSL的IIS Express Visual Studio.在属性窗口中,启用SSL设置为True ...
- struts2 核心过滤器的配置
<!-- struts2 过滤器核心配置--> <filter> <filter-name>struts2</filter-name> <filt ...
- 洛谷P1063能量项链题解
$题目$ 不得不说,最近我特别爱刷这种区间DP题,因为这个跟其他的DP有些不一样的地方,主要是有一定的套路,就是通过小区间的状态更新大区间,从而得到原题给定区间的最优解. $但是$ 这个题应该跟$石子 ...