0

我们在创建视图或控制器时使用(需要告诉文件在哪里,谢谢)自定义 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 类名称)

4

1 回答 1

1

您可以在此处找到模板:

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

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

编辑

Web.Extensions 的源代码不可用,但您可以使用 reector 并反映在 \Microsoft Visual Studio \Common7\IDE\Microsoft.VisualStudio.Web.Extensions.dll程序集上,以查看“mvcHost”为您提供了什么:)

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

于 2011-02-15T13:40:25.623 回答