Подтвердить что ты не робот

Как создать собственный шаблон шаблона в ASP.NET MVC 3?

ASP.NET MVC предоставляет возможность выбора "шаблона леса", на котором будет основываться только что созданный вид ( "Добавить вид" > "Создать строго типизированный вид" ). "Шаблон леса".

Возможно ли создать свой собственный шаблон шаблонов? И если да, то как?

4b9b3361

Ответ 1

ASP.NET MVC использует шаблоны T4. Вот обзор.

Вот шаги:

  • В Консоли диспетчера пакетов: install-package mvc3codetemplatescsharp
  • Принять все предупреждения
  • Папка CodeTemplates будет добавлена ​​в ваш проект, содержащий шаблоны

Здесь вы можете либо изменить существующие шаблоны, либо добавить новый.

Или если вы хотите изменить глобально, вы могли бы это сделать в папке C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\.

Ответ 2

Вы можете использовать T4 без nuget, конечно: Поместите папку в корень веб-сайта приложения (проект, содержащий представления). Структура каталогов важна, поэтому должна быть

\ CodeTemplates\AddView\AspxCsharp\MyTemplate.tt

Вы можете скопировать содержимое из одного из существующих шаблонов в C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\

Затем очистите свойство в файле TT с именем "Custom Tool". Это должно быть пустым.

Затем щелкните правой кнопкой мыши любое действие контроллера и скажите "Добавить вид" или, поскольку в нашем случае контроллеры находятся в отдельном проекте, щелкните правой кнопкой мыши папку "Просмотр" и нажмите "Добавить вид".

В раскрывающемся списке Нажмите "Создать строго типизированный вид", а затем введите тип, который будет использоваться в разделе "Просмотр класса данных:"

Наконец, в раскрывающемся меню "Просмотр содержимого" выберите "MyTempate". Это должно появиться, если вы правильно ввели папки.

Ответ 3

В Visual Studio 2012 с MVC 4 простой способ (установить пакет Nuget) дает вам неполную настройку, потому что пакет Nuget ужасно устарел (последнее обновление в 2011 году - возможно, в тот день, когда оно было создано).

Вы должны использовать эквивалент ответа Фрэнсиса Шанахана, но вместо этого путь для копирования вещей из (64-разрядный):

C:\Program Files (x86)\Microsoft Visual Studio\11.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates

Вы:

  • Добавьте ссылку на Microsoft.Web.Infrastructure, которую вы можете найти в сборках > Расширения.

  • Скопируйте эту папку CodeTemplates (включая саму папку) в корень вашего проекта и включите ее в проект

  • Игнорировать ошибки компилятора (например, не удается найти MvcTextTemplateHost)

  • Пройдите по свойствам каждого из добавленных файлов и удалите текст в свойстве "Пользовательский инструмент" каждого. Когда вы стрелка расширения рядом с каждым файлом исчезнет (потому что файл больше не будет создан на месте)

  • Сохранить все и построить - ошибки компилятора пропали

Если ошибки компилятора не исчезли - особенно если вы видите ошибку в сгенерированном файле .cs, Visual Studio не может найти, а файл .tt - закрыть Visual Studio, стереть папку temp и снова открыть решение. В одном случае я дошел до перезапуска до того, как проблема была устранена. Это было вызвано сгенерированным файлом .cs из шаблона .tt, который Visual Studio все еще пыталась автоматически генерировать код для.

Кроме того, имена файлов .tt немного запутаны - вот как они отображают:

GUI:

Пустой контроллер MVC
MVC-контроллер с действиями и представлениями чтения/записи, используя Entity Framework
Контроллер MVC с пустыми действиями чтения/записи
Пустой контроллер API
API-контроллер с действиями чтения/записи, используя Entity Framework
API-контроллер с пустыми действиями чтения/записи

Файлы CodeTemplates\AddController соответственно:

Controller.tt
ControllerWithContext.tt
Controller.tt
ApiController.tt
ApiControllerWithContext.tt
ApiController.tt

Вот инструкция if в Controller.tt и ApiController.tt, которая обрабатывает функции с/без операций чтения/записи.

Для представлений именование интуитивно, за исключением того, что List.tt создает Index.cshtml, а Empty.tt используется для любого вида, кроме Create/Delete/Details/Edit/Index.

Этот вопрос описывает, какие свойства вы можете использовать в шаблонах .tt.

Шаблоны

.tt - это шаблоны Microsoft T4. Синтаксис шаблонов T4.

Ответ 4

Или для Visual Web Developer Express в 32-разрядной системе другое место для этих файлов - C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\VWDExpress\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates