Леса и отображение / EditorTemplates - PullRequest
5 голосов
/ 02 декабря 2011

Скажем, у меня есть следующие модели:

public class Item
{
    public int Id{ get; set; }
    public ItemDescription ItemDescription{ get; set; }
}
public class ItemDescription
{
    public int Id{ get; set; }
    public int Revision{ get; set; }
    public string Test{ get; set; }
}

Я запускаю следующее в менеджере пакетов:

Scaffold Controller Item

, чтобы сгенерировать некоторые представления и прочее ... но оно появляетсячто скаффолдер игнорирует любые сложные / нескалярные типы данных и, следовательно, генерирует представления, которые мало полезны.

Мне интересно, можно ли поручить скаффолдеру быть немного более умным в отношении вещей.Вот что я хотел бы получить:

  • scaffolder создает шаблоны редактора / отображения в общей папке
  • использует EditorFor для использования этих шаблонов

Весь код для этого, кажется, сгенерирован скаффолдером, но структурирован таким образом, что меня удивляет, с _CreateOrEdit.cshtml «шаблонами», сгенерированными в папке, связанной с представлением.Для меня это говорит о том, что скаффолдер генерирует код, который не идеально подходит для более рекурсивного способа генерации представлений для моделей.

Мои ожидания не оправданы или я что-то упустил

1 Ответ

4 голосов
/ 02 декабря 2011

Описание

Вы можете найти шаблоны T4, которые Visual Studio использует для генерации кода в

YourPathToVisualStudio2010\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates

измените шаблоны, необходимые для решения вашей проблемы в целом. Еще одна вещь, которую вы можете сделать, это создать шаблон и добавить его в ваш конкретный проект / решение.

Ознакомьтесь с замечательным Скоттом Хансельманом - T4 (Набор инструментов преобразования текстовых шаблонов) Генерация кода - Best Kept Visual Studio Secret post.

Я настоятельно рекомендую вам прочитать ссылки в моем разделе «Дополнительная информация».

Хорошего дня!

Обновление

Уже несколько дней весь (не только mvc) веб-сайт Microsoft (из любви, спасибо Скотту Хансельману за этот термин;)) с открытым исходным кодом на codeplex ASP.NET Webstack . Проверьте это!

MVC4 не в RTM версии, но, возможно, вы заинтересованы.

Рецепты для генерации кода в Visual Studio (MVC4)

Новая функция Recipes позволяет Visual Studio генерировать специфичный для решения код на основе пакетов, которые можно установить с помощью NuGet. Платформа Recipes позволяет разработчикам легко создавать плагины для генерации кода, которые вы также можете использовать для замены встроенных генераторов кода для Add Area, Add Controller и Add View. Поскольку рецепты развертываются в виде пакетов NuGet, их можно легко включить в систему контроля версий и автоматически предоставить всем разработчикам проекта. Они также доступны для каждого решения.

Не стесняйтесь задавать дополнительные вопросы. Пожалуйста, используйте функцию комментария моего ответа.

Дополнительная информация

...