Как мне создать свой собственный шаблон Scaffold в ASP.NET MVC 3? - PullRequest
35 голосов
/ 14 января 2011

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

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

Ответы [ 5 ]

33 голосов
/ 14 января 2011

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

Вот шаги:

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

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

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

11 голосов
/ 14 января 2011

Конечно, вы можете использовать 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». Это должно появиться, если вы правильно ввели папки.

4 голосов
/ 18 апреля 2013

В 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

Вы:

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

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

  3. Пока игнорируйте ошибки компилятора (например, не удается найти MvcTextTemplateHost)

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

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

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

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

GUI:

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

Карта файлов CodeTemplates \ AddController соответственно:

Controller.ttControllerWithContext.ttController.ttApiController.ttApiControllerWithContext.ttApiController.tt

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

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

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

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

2 голосов
/ 26 мая 2011

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

0 голосов
/ 23 марта 2011

В этой статье MSDN обсуждаются строительные леса и шаблоны страниц: http://msdn.microsoft.com/en-us/library/cc488540.aspx

Что, в свою очередь, ссылается на следующую статью для изменения шаблонов: http://msdn.microsoft.com/en-us/library/cc488537.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...