修改ASP.NET MVC的T4代码模板以摆脱完整的命名空间引用

时间:2011-02-15 09:59:58

标签: asp.net-mvc t4 code-templates

我们在创建视图或控制器时使用(需要告诉文件的位置,谢谢)自定义T4代码模板。默认实现使这种类型成为第一行。

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ProjectNameHere.ViewModels.ViewModelClass>" %> 

我们已经在Web.config中定义了ViewModel和MVC名称空间,所以我希望代码模板能够生成它。

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<ViewModelClass>" %>

有任何建议如何修改默认模板以获得那种结果?哪个模板行实际生成了这些?

更多信息

我知道文件的位置和修改。问题是模板中他们正在使用这个

string mvcViewDataTypeGenericString = (!String.IsNullOrEmpty(mvcHost.ViewDataTypeName)) ? "<" + mvcHost.ViewDataTypeName + ">" : String.Empty;

ViewDataTypeName似乎包含完整的命名空间引用。我想得到类的名称(在本例中为ViewModel类名)

1 个答案:

答案 0 :(得分:1)

您可以在此处找到模板:

* \ Microsoft Visual Studio \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 2 \ CodeTemplates *

在那里你可以编辑每个模板的生成代码,模板行因每个模板而异,所以我不能告诉你,但你会立即发现它们。

编辑

Web.Extensions的源代码不可用,但您可以使用分析器并反思 \ Microsoft Visual Studio \ Common7 \ IDE \ Microsoft.VisualStudio.Web.Extensions.dll 程序集,以查看“mvcHost”为您提供的内容:)

然后您会注意到一个ViewDataType属性,它是一个“Type”,然后您应该能够在它周围创建一些逻辑来获取类名。