Получить имя контроллера в шаблоне View T4 - PullRequest
10 голосов
/ 24 июня 2010

У меня проблема, аналогичная описанной здесь: MVC T4 MvcTextTemplateHost и настраиваемый шаблон "Controller" T4 , но, надеюсь, проще.

У меня есть пользовательские шаблоны View (View.tt, Create.tt) для проекта ASP.NET MVC. Я не могу понять, как получить имя контроллера в этих шаблонах представления. mvcHost.ControllerName и mvcHost.ControllerRootName оба являются нулевыми в шаблонах представления. Однако где-то в контроллере конвейера имя известно , так как представление создается в папке ControllerName. Я хочу сослаться на это в самом шаблоне.

В частности, я хочу сгенерировать HTML.ActionLink("Edit", MVC.<controllername>.Edit(id)) вместо HTML.ActionLink("Edit", "Edit", new {id = item.id})

Можно ли получить имя контроллера в шаблоне просмотра?

Ответы [ 2 ]

5 голосов
/ 01 сентября 2011

Поскольку я почти всегда использую то же имя для моего контроллера, что и для модели, я использую этот код в своем шаблоне, чтобы получить имя модели и, следовательно, имя контроллера:

@Html.ActionLink("Create new", 
    MVC.<#= mvcHost.ViewDataTypeName.Split('.').Last() #>.Create())
3 голосов
/ 26 июня 2010

Я не думаю, что есть способ получить эту информацию в MVC 1.0 или MVC 2. Свойства ControllerRootName и ControllerName от хоста предназначены для шаблонов контроллера T4, а не для просмотра шаблонов T4.

Я посмотрю, сможем ли мы добавить дополнительную информацию на хост T4, чтобы включить эти свойства при создании представлений.

Причина, по которой сгенерированный файл отображается в нужной папке, заключается в том, что система проекта MVC берет выходные данные шаблона T4 и помещает их туда. Сама система T4 не участвует в этом процессе.

...