首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC T4 MvcTextTemplateHost和定制的“控制器”T4模板

MVC T4 MvcTextTemplateHost和定制的“控制器”T4模板
EN

Stack Overflow用户
提问于 2009-07-14 20:58:17
回答 1查看 4.6K关注 0票数 4

我正在创建自己的自定义T4模板,该模板集成了ADO.NET实体框架模型(.edmx文件),该模型包含在我的MVC应用程序中。

供参考

请简要查看以下两个URL。

  1. Scott "T4代码生成Visual最佳保密
  2. ASP.NET MVC开发人员快速启动指南

对我正在努力实现的目标的简短描述

使用T4引擎根据ADO.NET实体框架模型的主键生成具有动作方法的类。

我现在所拥有的

  1. MVC T4模板文件(例如,Controller.tt、Create.tt等)已经包含在我的MVC Web项目中。
  2. 我有一个ADO.NET实体框架MyModel.edmx文件在“Model”文件夹中。

基于控制器名(例如:( "ProductController"),我想从ADO.NET实体框架模型中检索"Product"类的System.Type信息。我希望能够检索System.Type信息,方式与MVC视图T4 T4(例如,Edit.tt)的方式相同,如下所示。

代码语言:javascript
复制
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost) (Host);
Type type = mvcHost.ViewDataType;

最终目标

我想通过反射从ADO.NET实体框架类创建控制器方法代码生成,以读取主键信息等

生成用于编辑、详细信息、添加操作等的基本CRUD操作和方法签名。

在我被困的地方

但是,正如您可以从MvcTextTemplateHost快速启动指南中看到的ASP.NET MVC开发人员文章中看到的那样,我无法检索System.Type for Controller T4模板,因为ViewDataType类只公开了用于创建MVC视图的ViewDataType属性。

我通过以下技术检索System.Type的尝试不起作用,因为modelType被作为null返回,这意味着它找不到类型。

代码语言:javascript
复制
Type modelType = Type.GetType(modelFullyQualifiedName, false, true);

我假设发生这种情况是因为实体框架模型是作为MVC项目的一部分而包含的,而不是作为编译的.DLL库程序集的一部分。

一些能帮我找到解决办法的东西

  1. 在哪里可以找到MvcTextTemplateHost类的源代码?如果至少可以找到DLL文件,则可能可以查看代码如何加载在Visual “添加视图”对话框中输入的类型信息。
  2. 是否有办法通过从我的System.Type模板中动态检索Visual项目中包含的类的T4信息?

如果有人能在这个主题上帮助我,我将非常感激,因为这将允许我为MVC控制器操作方法生成75%的代码,用于添加、编辑、详细信息等。和基本的CRUD操作代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-14 21:51:17

  1. 您可以使用Reflector从C:\Program (x86)\Microsoft 9.0\Common7\IDE\Microsoft.VisualStudio.Web.Extensions.dll程序集中反编译MvcTextTemplateHost的源代码。
  2. 是的,您可以使用CodeModel从Visual加载类型元数据。但是,最好直接从edmx文件读取它。不管怎样,这是一项艰巨的任务。在VS 2010中,可能有一个如何以EF T4模板的形式进行此操作的可用示例。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1128003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档