Представление должно выводиться из 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
Я могу включить полную трассировку стека, если это необходимо.
Может кто-нибудь советовать, что я могу делать неправильно?
Ответы
Ответ 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