MVC开发T4代码生成之一----文本模板基础
T4文本模板
T4全写为Text Template Transformation Toolkit,是一种编程辅助工具,用来使程序代码自(懒)动(猿)生(福)成(利)的工具。MVC开发中大量使用了T4模板,近乎魔性的应用可以参考Steve Sanderso的 MvcScaffolding系列文章。关于T4文本模板的相关知识,最权威的教材就是微软的官方说明,其中重要的指令可以参考这里。园子里也有许多相关文章,从基础的T4模版引擎之基础入门 到涉及T4体系结构的(译)理解 T4 模板:<#@ parameter #> 指令都有,这些内容作为基础参考资料已经很详细,这里就不再重复了。从本篇开始,我们会以T4模板在MVC视图开发中的应用为例逐步对T4模板进行应用扩展。
MVC网站开发中的T4应用
在MVC网站开发中,当新建controller-Action后可以通过在Action上右键点击“添加视图”的方式弹出为Action添加视图对话框:
在其中选择合适的模板、模型类及其他参数后点击确定就会在项目Views文件下与controller名称对应的目录下创建Action视图(第一次使用这个功能时着实激动了很久),这其实就是使用的vs自带的视图T4模板,vs自带的视图T4模板一共有图上所示Create、Delete、Details、Edit、Empty、Empty(不具有模型)、List几种,并且分C#、VB两个版本,模板位置在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates\MvcView内并以.t4做扩展名,其中.cs.t4的为C#版.vb.t4的为VB版:
可以看到目录内的T4模板与新建视图时的模型是相对应的,模板可以使用任意文本编辑工具打开编辑。其中的Imports.include.t4是一个公共头部,ModelMetadataFunctions.cs.include.t4则是一个处理ModelMetadata的公共函数,这两个文件供其他模板包含使用。
MVC开发T4代码生成之一----文本模板基础的更多相关文章
- MVC开发T4代码生成之二----vs模板扩展
在上一篇MVC开发T4代码生成之一----文本模板基础中介绍了与T4模板相关的基础知识,并对MVC内使用T4模板添加视图做了介绍.知道了T4模板的使用后自然就想着怎么对vs自带的T4模板进行扩展,添加 ...
- C#-MVC开发微信应用(3)--文本消息和图文消息的应答
最近咨询微信的人很多,感觉这块也是一块商机,也为了演示SNF快速开发平台的优势,就用SNF快速开发平台开发出一套微信应用程序.使用<SNF.CodeGenerator>代码生成工具可以节省 ...
- C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...
- C#-MVC开发微信应用(8)--菜单管理的实现
之前讲解了微信后台管理页面的操作来管理菜单,下面我们在简单的来看一下,代码是如何实现的. 我们要实现获取微信的菜单.创建菜单.删除菜单等操作. 01.首先定义菜单操作的接口: /// <summ ...
- C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...
- C#-MVC开发微信应用(2)--微信消息的处理和应答
微信应用使用场景和商机很多,所以这也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为SNF完善的必要条件了.本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验 ...
- C#-MVC开发微信应用(6)--用户分组信息管理
让我们继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发.本篇继续上一篇的介绍,主要介绍分组管理方面的开发应用,这篇的内容和上一篇,作为一个完整的用户信息和分组信息管理的组合. 1. ...
- C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
前几篇已经介绍菜单和有回复信息操作,下面我们就结合snf微信端管理页面,看一下什么才是自动应答系统. 定制的服务 对于微信服务号来说,最主要的功能是提供更好的服务.用户更方便的操作,以及更快的反馈响应 ...
- C#-MVC开发微信应用(4)--微信门户菜单的管理操作
最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭建一个较为完善.适用的微信门户应用管理系统. 在微信门户系统里面, ...
随机推荐
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- php查询mysql数据库
1.连接数据库,写成一个php,其他文件直接include <?php $connect = mysql_connect("ip地址","用户",&quo ...
- js小技巧总结
js小技巧总结 1.Array.includes条件判断 function test(fruit) { const redFruits = ["apple", "stra ...
- Android 开发 PopupWindow弹窗
简介 PopupWindow,顾名思义弹窗.PopupWindow是与AlertDialog在形式上类似的弹窗功能,都是为了在activity最上层显示一个弹窗.但是区别是PopupWindow可以自 ...
- IntelliJ IDEA 设置背景图片
1.在idea中 按快捷键 Ctrl+Shift+A 出现如图 输入 Set Background Image 双击 Set Background Image 2.选择要添加的图片的路径 ...
- JavaScript装饰者模式
这里我们通过需求逐渐引出装饰者模式. 下面是一个关于几代汽车的不同逐渐体现装饰者模式的. 首先,我们先引入一个接口文件----目的为检验实现类是否完全实现接口中的方法,代码如下, //定义一个静态方法 ...
- ThreadLocal 原理及一些实现
ThreadLocal = TL 网上讲TL原理很多,我大概说下自己的理解 TL其实是不是有点像全局的配置中心,static ConcurrentHashMap<Thread,value> ...
- pycharm同步代码到coding
代码同步coding三步曲: 1.pycharm的tips---vcs---checkout from version control---git 选择git后会弹出clone repository弹 ...
- Go 语言 map (映射)
1.Go 语言中 map 的定义及初始化: map[Key_Type]Value_Type scence := make(map[string]int) 2.Go 语言的遍历: scene := ma ...
- Java数据类型(Primivite 和引用数据类型!)
一.byte(8位) short(16位) int(32位) long(64位) float(32位) double(64位) boolean(Java虚拟机决定) true 或者false! ...