ASP.NET MVC中强类型View的T4模板的使用

衣明志 发表于 , 阅读 (16265)

现在ASP.NET MVC已经发布MVC2 RC2的版本,可以从http://www.microsoft.com/downloads/details.aspx?FamilyID=7aba081a-19b9-44c4-a247-3882c8f749e3&displaylang=en 页面上下载,当然了这个安装程序是针对VS2008的。而VS2010的最新发布版本为VS2010 RC版,该版本中内置了较新版的MVC2框架,不必单独安装。

而我们使用过ASP.NET MVC的同学们呢,应该注意到MVC2中默认的强类型View模板跟之前的版本是不同的,主要原因是因为其对应的T4模板不同。如果有一个项目原来使用的ASP.NET MVC1开发的,现在要升级为MVC2。该场景下你对原来的默认强类型View加入了一些js特效,若跟HTML结构有直接关系,那么升级到MVC2会有不兼容问题,原因是MVC1的HTML是每个Model属性用

包括的,而MVC2的则是两个
分别包括属性的显示名和相应的编辑空间或显示内容。那么我们如何快速解决这个问题呢?其实较为简单,操作如下

  1. 到您的Visual Studio安装目录中搜索一下CodeTemplates,分别找到MVC1和MVC2对应的的CodeTemplates\AddViews目录 image
  2. 将MVC1的CodeTemplates\AddViews中要用到MVC2的模板文件复制到MVC2的CodeTemplates\AddViews中,并修改相应的名称,甚至可以将类似TextBox方法改为TextBoxFor方法以提升性能,即可实现在该版本的VS中的所有MVC2项目的添加强类型View多出旧版View的支持。
  3. 如果只希望在当前的MVC2项目中能够创建旧版的强类型View,则可在项目根目录下创建CodeTemplates目录,并在CodeTemplates下创建AddViews目录,再然后将类似上一步中的方式将对应*.tt文件复制到当前项目的CodeTemplates\AddViews中即可,而VS安装目录中的MVC2的CodeTemplates\AddViews则保持初始状态即可。
  4. 同样当有特殊的强类型View需求时,也可以自己创建一个.tt的T4模板文件添加到对应的CodeTemplates\AddViews目录中即可

需要注意的是当将.tt文件复制到MVC项目中的CodeTemplates\AddViews目录或其他任何目录时,VS会有一个自动的执行过程,即自动在.tt下方生成一个新的同名aspx文件,这个文件对我们基本是无用的,所以删除即可。

2 条评论
陈希章
陈希章 2010-02-25 22:56
建议讲一讲什么是T4模板,为什么用T4模板,呵呵
衣明志
衣明志 2010-02-25 23:18
好的近期,会再发一篇说说T4的模板的相关内容:)