我们在创建视图或控制器时使用(需要告诉文件的位置,谢谢)自定义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类名)
答案 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”,然后您应该能够在它周围创建一些逻辑来获取类名。