Я добавил в проект страницу cshtml. Когда я попытался добавить к нему следующее объявление, я получил сообщение об ошибке: «Имя« модель »не существует в текущем контексте».
@model xyz.abc.SomeClass
Я проверил ссылки, все они на месте. Я добавил web.config в папку просмотра, но это не помогло.
Что мне не хватает?
asp.net-mvc-3
razor
user602737
источник
источник
Ответы:
Обновление: если вы используете более новую версию MVC, применяется тот же процесс, просто убедитесь, что вы используете правильный номер версии в
<host>
строке web.config .Что ж, я обнаружил, что испытываю то же самое, что и вы, и после небольшого дополнительного исследования я выяснил, в чем проблема!
Вам необходимо включить MVC3 web.config по умолчанию для папки Views. MVC3 имеет два: один в корне вашего приложения и один для папки представлений. Здесь есть раздел для включенных пространств имен. Убедитесь, что ваш выглядит примерно так:
Я предлагаю вам создать новый проект MVC3, а затем просто скопировать созданный для вас web.config в папку представлений.
Важно. После того как вы это сделаете, вам нужно закрыть файл и снова открыть его. Вуаля! Intellisense!
источник
MAIN
файле web.config<add key="webpages:Version" value="3.0.0.0" />
Я столкнулся с этой же проблемой, когда создал новую область для организации своих страниц. Моя структура выглядела так:
WebProject
Представления, созданные в папке Views в веб-проекте, работали нормально, но представления, созданные в NewArea, вызвали следующую ошибку:
Чтобы исправить это, я скопировал файл web.config из папки Views в WebProject в папку Views в NewArea. Увидеть ниже.
WebProject
Я столкнулся с этим, потому что вручную создал эту новую область, используя Добавить -> Новая папка, чтобы добавить папки. Я должен был щелкнуть проект правой кнопкой мыши и выбрать Добавить -> Область. Тогда Visual Studio позаботилась бы о правильной настройке области.
источник
Views/Web.config
ссылался наSystem.Web.Mvc.MvcWebRazorHostFactory
версию 5.0.0.0, и у меня была сторонняя область, ссылающаяся на v4.0, и представления работали совместно. ЯViews/Web.config
вернулся к версии 4.0, и все заработало.Если ваши представления находятся в сборке библиотеки классов, что полезно для повторного использования общих представлений в проектах, тогда простого выполнения того, что предлагает Адам, может быть недостаточно. Даже с этим у меня все еще были проблемы.
Попробуйте это в своем web.config в корне вашего проекта:
И это в web.config в папке просмотра:
Это сработало для меня. Теперь у меня есть intellisense и нет ошибок компиляции в моих представлениях в проекте, отличном от MVC, на который я затем могу ссылаться с нескольких веб-сайтов MVC.
источник
Я столкнулся с этой проблемой, когда у меня случайно была копия файла представления (About.cshtml) для маршрута / about в корневом каталоге. (Не в папке просмотров). Как только я переместил файл из корня, проблема исчезла.
источник
Были аналогичные проблемы с использованием VS2012 и VS2013.
Добавление следующей строки в <appSettings> в основном файле web.config сработало:
Если строка уже была там, но говорила 2.0.0.0, изменение ее на 3.0.0.0 сработало.
источник
Обновление: 5/5/2015. Для вашего проекта MVC 5 вам необходимо установить версию 5.0.0.0 в вашем /views/web.config
источник
Пока вы объявляете модель в верхней части представления, используя такой код:
ссылки на него ниже необходимо писать с заглавной буквы, например:
Я считаю, что основной причиной этого может быть отсутствие файла web.config в папке Views, но если это исправлено и проблема все еще сохраняется, убедитесь, что вы используете модель , а не модель, чтобы ссылаться на нее в источнике.
источник
Я тоже столкнулся с этой проблемой. Мои обстоятельства были немного другими.
Одна из моих папок просмотра была случайно перемещена в корневой каталог моего проекта. Это привело к
project_root/SignUp/ViewName
сопоставлению маршрута раньшеproject_root/Views/SignUp/ViewName
. Это вызвало@model
ошибку.После перемещения представлений обратно в соответствующее место каталог каким-то образом был воссоздан в корне проекта. На этот раз пусто.
/SignUp/ViewName
работал, но/SignUp/
выкинул403 - Forbidden: Access is denied.
ошибку. Вся папка должна быть удалена от корня проекта.Я надеюсь, что это поможет кому-то. Я часами полагал, что проблема была вызвана нашим недавним обновлением с MVC 3 до MVC 4. Просто примечание: проблемы с обновлением должны возникать только между MVC 2 и MVC 3. Если вы видите эту проблему в более поздних версиях, вероятно, это не из-за Обновить.
источник
Мне потребовалось время, чтобы решить эту проблему, но, наконец, я надеюсь, что решил ее на MVC, что похоже:
Я переустановил ASP.NET 4.5 ( http://www.asp.net/downloads )
Я следил за руководством по обновлению на http://www.asp.net/whitepapers/mvc4-release-notes
НО этот абзац мне не подходит
Поскольку у меня есть Razor в System.Web.Razor , я изменил пространство имен razor на System.Web.Razor.
Добавьте это в свой web.config
Я добавил ссылку на сборку для всех этих сборок выше
Найдите элемент ProjectTypeGuids и замените {E53F8FEA-EAE0-44A6-8774-FFD645390401} на {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Вот и все.
источник
<add key="webpages:Version" value="2.0.0.0" />
это движущий фактор, другие настройки не нужны.3.0.0.0
но да, это очень важно!Это ужасная ошибка, но:
Убедитесь, что у вас есть файлы Web.config в вашем представлении на удаленном компьютере . Возможно, вы пропустили загрузку с помощью фильтров вашей FTP-программы.
источник
Мне не хватало web.config в разделе Areas / MyArea / Views / web.config. После добавления он работал нормально. Это было с MVC 5 и .NET4.5
источник
Есть еще одна причина. В моем случае мне пришлось скопировать файл index.cshtml в корневую веб-папку (за пределами папки Views) в качестве резервной копии с удаленного сервера.
Итак, я продолжал изменять свой /views/web.config, продолжал изменять свой /views/home/index.cshtml, и ошибка продолжалась ... пока не обнаружил /index.cshtml вне папки просмотров, удалил его и, конечно же, все вернулось в норму!
источник
Я столкнулся с той же проблемой, но в моем случае изменилось только то, что я удалил Visual Studio 2012 и установил Visual Studio 2013. Я открыл наше решение, но продолжал получать одну и ту же
The name 'model' does not exist in current context
ошибку в каждом представлении Razor.Мой коллега предложил проверить наличие обновлений для VS2013. После установки VS2013 Update 1 эта ошибка перестала появляться .
источник
Проверьте свой файл конфигурации в каталоге просмотров. в добавлении ключа для MVC 4/5
источник
Переустановка nuget решила это для меня
PM> Install-Package Microsoft.AspNet.Razor -Version 3.2.3
источник
Для меня это было проблемой. В разделе отсутствовал весь этот блок.
источник
У меня такая же проблема после обновления пакетов. Я сделал все, что Вы написали выше в этой теме, но красный цвет, лежащий в основе ключевого слова model, не исчез. Позже было найдено решение: просто удалил папку «package» из каталога моего проекта и перестроил, тем временем позволив NuGet восстановить отсутствующие пакеты. Обновился, и готово!
источник
Убедитесь, что ваш файл web.config должен существовать в опубликованных файлах
источник
Я столкнулся с той же проблемой, но потом нашел решение. Решение такое:
.Suo файл скрытый файл в той же папке , где .svn существует файл решения. Надеюсь, сработает!
источник