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代码生成之一----文本模板基础的更多相关文章

  1. MVC开发T4代码生成之二----vs模板扩展

    在上一篇MVC开发T4代码生成之一----文本模板基础中介绍了与T4模板相关的基础知识,并对MVC内使用T4模板添加视图做了介绍.知道了T4模板的使用后自然就想着怎么对vs自带的T4模板进行扩展,添加 ...

  2. C#-MVC开发微信应用(3)--文本消息和图文消息的应答

    最近咨询微信的人很多,感觉这块也是一块商机,也为了演示SNF快速开发平台的优势,就用SNF快速开发平台开发出一套微信应用程序.使用<SNF.CodeGenerator>代码生成工具可以节省 ...

  3. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名

    转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...

  4. C#-MVC开发微信应用(8)--菜单管理的实现

    之前讲解了微信后台管理页面的操作来管理菜单,下面我们在简单的来看一下,代码是如何实现的. 我们要实现获取微信的菜单.创建菜单.删除菜单等操作. 01.首先定义菜单操作的接口: /// <summ ...

  5. C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...

  6. C#-MVC开发微信应用(2)--微信消息的处理和应答

    微信应用使用场景和商机很多,所以这也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为SNF完善的必要条件了.本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验 ...

  7. C#-MVC开发微信应用(6)--用户分组信息管理

    让我们继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发.本篇继续上一篇的介绍,主要介绍分组管理方面的开发应用,这篇的内容和上一篇,作为一个完整的用户信息和分组信息管理的组合. 1. ...

  8. C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人

    前几篇已经介绍菜单和有回复信息操作,下面我们就结合snf微信端管理页面,看一下什么才是自动应答系统. 定制的服务 对于微信服务号来说,最主要的功能是提供更好的服务.用户更方便的操作,以及更快的反馈响应 ...

  9. C#-MVC开发微信应用(4)--微信门户菜单的管理操作

    最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭建一个较为完善.适用的微信门户应用管理系统. 在微信门户系统里面, ...

随机推荐

  1. WPF常用TriggerAction用法 (一)

    Microsoft.Expression.Interactivity 常用TriggerAction-> CallMethodAction ChangePropertyAction Contro ...

  2. vector用法

    转:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html 在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. ...

  3. 使用Git将本地文件提交到远程仓库

    一 操作准备条件: git远程仓库已经建好了,本地文件已经存在了,现在要将本地代码推到git远程仓库保存. 解决办法如下: 1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以 ...

  4. 解决导出CSV后在EXCEL打开纯数字前面0丢失问题

    select ip ,concat('="',accountname,'"')select ip ,concat('="',accountname,'"')

  5. sublime编译javaScript脚本

    处理步骤: 1. 首先到 nodejs.org 下载 Node.js 安装包并安装.2. 打开 Sublime Text 3 编辑器.选择菜单 Tools --> Build System -- ...

  6. 设计CUBE by kylin

    1.新增或者选择一个已有项目(project)后,将hive数据导入到kylin中,web界面的Model→Data source,导入数据 2.创建数据模型,数据模型是Cube的基础,它主要用于描述 ...

  7. 在虚拟机上的ubuntu 1.6 系统中sudo apt-get失败的问题

    在虚拟机上sudo apt-get update 失败.可能是网络dns问题,把nameserver \设为你路由器的内网ip地址就没事了; 详细: 1/打开sudo gedit /etc/resol ...

  8. 关于c# Debug和Release的区别 (转)

    关于Debug和Release的区别之讨论本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release ...

  9. win10关不了机解决办法以及win10怎么禁止开机启动项

    1.win10关不了机解决办法:https://zhidao.baidu.com/question/693962749213927924.html 2.win10怎么禁止开机启动项:https://j ...

  10. Silverlight中验证码生成

    public class ValidationCode { Random r = new Random(DateTime.Now.Millisecond); /// <summary> / ...