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

Представление должно выводиться из WebViewPage или WebViewPage <TModel>

Я следую учебник по архитектуре плагина Justin Slattery и пытается адаптировать его для Razor вместо WebForm Views.

Все остальное (контроллеры, загрузка сборки плагинов и т.д.), похоже, в порядке. Тем не менее, я не могу использовать встроенные представления Razor для правильной работы. Когда я пытаюсь перейти к "HelloWorld/Index", я получаю следующую ошибку:

The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>.

Исключение выбрано System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

Я могу включить полную трассировку стека, если это необходимо.

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

4b9b3361

Ответ 1

Вы можете проверить следующее сообщение в блоге, которое более приспособлено к Razor.

Но чтобы ответить на ваш вопрос, поскольку теперь вы просматриваете свои представления из нестандартного местоположения, больше не применяется файл ~/Views/web.config и позволяет указать базовый тип для ваших бритвенных просмотров. Поэтому вам может потребоваться добавить следующее в верхней части каждого вида бритвы:

@inherits System.Web.Mvc.WebViewPage
@model ...

Ответ 2

Примечание. У меня была очень похожая проблема, и мне пришлось наконец отследить, что я был единственным разработчиком с MVC 4.0.0.0, связанным в их решении.

У всех остальных был 3.0.0.0 должным образом указана и была построена/запущена без ошибок.

TL; DR Убедитесь, что ваши ссылки совпадают с остальной частью вашей группы разработки.

Ответ 3

У меня была такая же проблема, потому что я не фиксировал папку пакетов, содержащую библиотеки бритвы. Затем я добавил пакет, он работал, но после восстановления он сломался. Затем я отключил автоматический запуск при сборке, и теперь он работает нормально. В моем случае, nuget возился.

Ответ 4

Просто появилась эта ошибка сегодня при обновлении старого MVC3-проекта до версии 4, и для меня решение заключалось в том, чтобы удалить атрибут appliesTo="v2.0.50727" в разделе <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">.

Ответ 5

Я хочу поделиться своей болью.. сайт работал нормально на месте, однако, когда я опубликовал его в IIS клиента, он выбрасывал эту ошибку. Все файлы web.config(root и /Views ) отлично сочетаются с рабочей копией сайта.

В одном из представлений (logon.cshtml) были непоследовательные окончания строк, и я не нажал кнопку "да", чтобы исправить это на моей машине Windows.

Нажав "да" в диалоговом окне "Неподходящие окончания строк" ​​и опубликуем представление logon.cshtml, он исправил его для меня.

Ответ 6

Я получил эту ошибку, когда попытался добавить подмостки MVC (в частности, папку Views) в проект веб-API. Дарин Димитров отвечает:

больше не используется файл ~/Views/web.config и позволяет указать базовый тип для просмотров бритвы

И в комментариях к этому ответу joelnet сказал:

Мне удалось скопировать файл web.config из ~/Views в мое альтернативное местоположение, чтобы решить мою проблему с этим.

и Пол Д'Ауст сказал:

Если вам не удается получить решение в комментарии @joelnet для работы, попробуйте очистить и перестроить проект.

Эти подсказки помогли мне разобраться в решении.

Сначала я скопировал Web.config из папки Views другого проекта в том же решении в мою новую папку Views. Я переименовал основной тег namespace в соответствие с новым проектом, а после получения ошибки удалил другой <add namespace="..." />, который мне не нужен. Затем я вызвал сборку (только обычная сборка, мне не нужно было ее чистить и перестраивать), и я смог загрузить новый вид без ошибок.

Ответ 7

Установите пакет: Install-Package Microsoft.AspNet.WebPages