在View T4模板中获取控制器名称

Fel*_*lix 10 asp.net-mvc t4 visual-studio-2010

我有一个类似于这里描述的问题:MVC T4 MvcTextTemplateHost和自定义"控制器"T4模板,但希望,更简单.

我有一个用于ASP.NET MVC项目的自定义视图模板(View.tt,Create.tt).我无法弄清楚如何在这些视图模板中获取控制器名称.mvcHost.ControllerName和mvcHost.ControllerRootName在视图模板中都为空.但是,管道控制器名称中的某个位置已知的,因为视图是在ControllerName文件夹中创建的.我想在模板本身中引用它.

具体来说,我想生成HTML.ActionLink("Edit", MVC.<controllername>.Edit(id))而不是HTML.ActionLink("Edit", "Edit", new {id = item.id})

是否可以在View模板中获取控制器的名称?

Örj*_*mte 5

因为按照惯例,我几乎总是使用与我命名模型相同的控制器名称,所以我在模板中使用此代码来获取模型名称及其控制器名称:

@Html.ActionLink("Create new", 
    MVC.<#= mvcHost.ViewDataTypeName.Split('.').Last() #>.Create())
Run Code Online (Sandbox Code Playgroud)


Eil*_*lon 3

我认为没有办法在 MVC 1.0 或 MVC 2 中获取该信息。主机中的 ControllerRootName 和 ControllerName 属性适用于控制器 T4 模板,而不适用于视图 T4 模板。

我将看看是否可以向 T4 主机添加更多信息,以便在生成视图时启用这些属性。

生成的文件显示在正确的文件夹中的原因是 MVC 项目系统获取 T4 模板的输出并将其放在那里。T4系统本身不参与此过程。