Scaffolding and Display/EditorTemplates

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

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 создает шаблоны Editor/Display в общей папке
  • использует EditorFor для использования этих шаблонов

Кажется, что весь код для этого создается скаффолдером, но структура его меня удивляет: в папке, связанной с представлением, создается _CreateOrEdit.cshtml "шаблона". На мой взгляд, это говорит о том, что скаффолдер генерирует код, который не идеально подходит для более рекурсивного способа создания представлений для моделей.

Мои ожидания не оправдались, или я что-то упускаю?


person spender    schedule 02.12.2011    source источник
comment
public ItemDescription ItemDescription{get; set;}? разве это не должно быть public class_name object_name{get;set;}?   -  person    schedule 24.03.2012


Ответы (1)


Описание

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

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

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

Ознакомьтесь с великолепным Scott Hanselman - T4 (набор инструментов преобразования текстовых шаблонов) Code Generation - Best Kept Visual Studio Secret сообщение.

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

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

Обновлять

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

MVC4 не находится в RTM-версии, но, возможно, вас это заинтересует.

Рецепты создания кода в Visual Studio (MVC4)

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

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

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

person dknaack    schedule 02.12.2011