【问题标题】:Modifying T4 code templates for ASP.NET MVC to get rid of full namespace reference修改 ASP.NET MVC 的 T4 代码模板以摆脱完整的命名空间引用
【发布时间】:2011-02-15 09:59:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以在此处找到模板:

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

    您可以在此处编辑每个模板的生成代码,每个模板的模板行各不相同,所以我无法告诉您,但您会立即发现它们。

    编辑

    Web.Extensions 的源码不可用,但是可以利用rector,反思一下 \Microsoft Visual Studio\Common7\IDE\Microsoft.VisualStudio.Web.Extensions.dll 程序集,看看“mvcHost”给你什么:)

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

    【讨论】:

    • 感谢您的回答。似乎没有比操作命名空间字符串更简洁的方法了。
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2017-01-10
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多