2012-02-13 5 views
1

При добавлении представления в MVC с помощью диалогового окна «Добавить вид» можно получить имя папки, в которую она добавляется, из шаблона просмотра T4 (например, папка «MyController», «Общая» папка и т. Д.)?MVC Добавить View T4 Получить имя каталога

Я пытаюсь выяснить имя контроллера при добавлении представления и подумал, что могу определить его, используя имя папки. У нас есть соглашение об именах для общих представлений, что упрощает определение имени контроллера, но представления в папке контроллера используют стандартное соглашение об именах (например, «Индекс», «Детали»).

Спасибо!

ответ

1

Насколько я могу судить, нет способа получить путь к генерируемому файлу. На этом MvcTextTemplateHost нет свойства.

Однако похоже, что свойство Namespace предоставит вам родительскую папку. Поэтому, если ваш проект имеет корневое пространство имен Test и вы добавляете новый вид в папку Views \ Home, тогда свойство Namespace вернет «Test.Views.Home».

MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host); 
string namespace = mvcHost.Namespace; 
+0

Это именно то, что я искал, спасибо много! – Rob

0

Как я решил это был я написал класс T4 DesignHelper внутри Visual Studio, я должен был добавить некоторые ссылки в ASP.NET MVC веб-проекта Visaul студия в

Microsoft.VisualStudio.TextTemplating.10.0 
Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 
Microsoft.VisualStudio.Web.Mvc.4.0 
System.ComponentModel.DataAnnotations 

может быть, некоторые другие классы вас может сломать его в рефлекторе .NET, что использует хост mvc. Поэтому то, что вам может понадобиться. Затем в первой строке шаблона T4 я создаю экземпляр класса T4 DesignHelper и передаю ему хост mvc. Остальные методы в шаблоне T4 воспроизводятся в классе T4Designer (так что я могу видеть, что происходит, а также любые другие методы, которые я хотел или вы могли бы добавить. Вы можете создать экземпляр всего, что вы хотите, чтобы ссылки на FileInfo db использовали дополнительное отражение для получения информации из типов моделей и т. д. У этого есть несколько преимуществ 1. Вы можете вызвать его из контроллера, когда просмотр загружается и видит, что происходит, что все ваши методы выполняются и что происходит. Также он уменьшает шаблон T4 до метод вызывает экземпляр класса T4 DesignHelper, и вы можете разместить там действительно сложную логику генерации представлений.

Смежные вопросы