В раскрывающемся списке "Просмотреть модель" не отображается мой класс - PullRequest
22 голосов
/ 12 марта 2012

Я создал новое интернет-приложение C # asp.net mvc 4.0 (beta), и у меня несколько странное поведение в диалоговом окне «Добавить представление» в Visual Studio 2010 (sp1).Когда я решаю создать строго типизированное представление, в диалоговом окне «Добавить представление» раскрывающийся список класса «Модель» не отображает мой класс ViewModel.

Для записи: да, я скомпилировал приложение перед тем, как вызвать диалоговое окно Add View.

Мне кажется, что я точно определил проблему, но не знаю, как ее исправить.,Ниже приведены действия по воспроизведению, если кто-то захочет воспроизвести поведение:

  1. В Visual Studio 2010 (sp1) создайте новое интернет-приложение C # asp.net MVC 4.0 (бета).
  2. Внутри папки Models создайте новый простой класс с именем «GazouViewModel.cs»
  3. Создайте приложение, откройте HomeController, щелкните правой кнопкой мыши Index () ActionResult и выберите Add View…
  4. В диалоговом окне «Добавить представление» установите флажок «строго типизированное представление» и в раскрывающемся списке «Модель»: «GazouViewModel»

  1. в обозревателе решенийщелкните правой кнопкой мыши свой проект и выберите «Управление пакетами NuGet»
  2. Найдите, найдите и установите пакет «Bootstrapper.Autofac».
  3. Перестройте приложение и убедитесь, что ваш «GazouViewModel» по-прежнему отображаетсяв диалоговом окне Добавить представление.
  4. «GazouViewModel» должен по-прежнему отображаться в раскрывающемся списке.

  1. В решенииExplorer, щелкните правой кнопкой мыши свой проект и выберите «Управление пакетами NuGet»
  2. Поиск, найдите и установите пакет «Autofac ASP.NET MVC4 (Beta) Integration».
  3. Перестройте приложение и проверьтеесли ваш «GazouViewModel» по-прежнему отображается в диалоговом окне «Добавить представление».
  4. «GazouViewModel» должен по-прежнему отображаться в раскрывающемся списке.

  1. в обозревателе решенийщелкните правой кнопкой мыши свой проект и добавьте новый класс (Class1.cs) везде, где это не имеет значения.
  2. Сделайте так, чтобы Class1 реализовал IAutofacRegistration и реализовал интерфейс.
  3. Перестройте приложение и проверьтеесли ваш «GazouViewModel» по-прежнему отображается в диалоговом окне «Добавить представление».
  4. «GazouViewModel» больше не отображается в раскрывающемся списке класса модели.

ItПохоже, что как только я создаю класс, который реализует интерфейс IAutofacRegistration, и создаю приложение, я больше не могу просматриватьng мои ViewModels в этом выпадающем списке.

Кто-нибудь может подтвердить, что они получают те же результаты, что и я?И что еще более важно, как можно это исправить?

ВАЖНО : я попробовал те же самые шаги с приложением mvc 3.0, и происходит точно такое же поведение ... так что это не относится кБЕТА версия.

С уважением Винс

Ответы [ 9 ]

15 голосов
/ 08 августа 2012

Если вы получаете сообщение об ошибке: «Выполнение преобразования. Похоже, что во входном файле используется версия схемы, не поддерживаемая этим шаблоном. Это может привести к ошибкам компиляции. Используйте« Добавить новый созданный элемент », чтобы добавить обновленный шаблон» .

Вы используете EF 5.x. Вы должны добавить метаданные для EF 5.x в шаблон T4. В заголовке файла вызовите DefineMetadata ()

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ include file="EF.Utility.CS.ttinclude"#><#@ output extension=".cs"#><#

DefineMetadata();

внизу вашего шаблона создания метода

private void DefineMetadata()
{
    TemplateMetadata[MetadataConstants.TT_TEMPLATE_NAME] = "CSharpDbContext.Types";
    TemplateMetadata[MetadataConstants.TT_TEMPLATE_VERSION] = "5.0";
    TemplateMetadata[MetadataConstants.TT_MINIMUM_ENTITY_FRAMEWORK_VERSION] = "5.0";
}
9 голосов
/ 27 апреля 2012

Я решил эту проблему, сходя с ума примерно через 2 часа и затем удаляя Assembly.cs из папки Properties в решении. После того, как я перестроил решение, раскрывающийся список моделей «Добавить представление» неожиданно обнаружил все мои модели представления, что довольно странно.

Я полагаю, что версия сборки, определенная в Assembly.cs, каким-то образом перепуталась с реальной версией, использованной в проекте. Во всяком случае, теперь это работает для моего случая.

3 голосов
/ 24 августа 2015

Что мне помогло, так это просто создать решение после создания моей модели. Тогда я смог найти свою модель в выпадающем списке.

2 голосов
/ 10 июля 2012

Я также заметил эту проблему (при использовании MVC 4 Beta в Visual Studio 2010).Перезапуск Visual Studio решил проблему для меня.

1 голос
/ 17 августа 2016

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

В моем случае пространство имен было слишком длинным для отображения в раскрывающемся списке «Класс модели». Сокращение пространства имен (смешная боль само по себе) заставило выпадающий список снова работать!

1 голос
/ 12 августа 2014

Просто очистите и постройте свое решение.У меня это сработало.

1 голос
/ 01 мая 2012

ОБНОВЛЕНИЕ: На момент написания этой статьи я больше не могу воспроизвести ошибку.Возможно, используемые мной пакеты NuGet были обновлены до более новой версии и случайно исправили ошибку.

Я отмечу это сообщение как закрытое.

Спасибо всем за этот вклад!

Винс

0 голосов
/ 07 августа 2014

Я понимаю, что это немного устарело. У меня была похожая ситуация, когда мои классы не загружались в мастер View Template. Я использую VS 2012 с MVC3. Все остальные в команде были в порядке, просто, к счастью, у меня были проблемы. После долгих исследований и множества попыток единственное, что постоянно исправляло, - это запуск VS в безопасном режиме (из командной строки: «C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ devenv.exe» ». /безопасный режим). Одно из моих расширений должно быть причиной проблемы, и при запуске в безопасном режиме они не загружены.

0 голосов
/ 24 июля 2012

Используя VS 2010 и MVC 3.0, в какой-то момент раскрывающийся список классов Add View Model не показывал мне никаких классов.Предложение Ивана перезапустить VS, похоже, сработало для меня.

Я попытался удалить AssemblyInfo.cs, сделал Clean и Rebuild, но они не решили проблему.Когда я перезапустил VS, классы моделей вернулись в раскрывающемся списке.

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