Имя "ViewBag" не существует в текущем контексте - Visual Studio 2015
Я снова начинаю развиваться в ASP.NET, и в Visual Studio я столкнулся с небольшой ошибкой. В файлах .cshtml отображаются ошибки при использовании нескольких функций бритвы. Например, "Имя" ViewBag "не существует в текущем контексте". Вот изображение:
![снимок экрана проблемы в visual studio 2015]()
Я использую демонстрационный проект. Вы можете найти проект здесь: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject
Я просмотрел несколько других потоков, и большинство предлагает обновить файлы web.config. Эти 2 файла конфигурации уже присутствуют, и поскольку это довольно популярная демонстрация, я предполагаю, что в ней есть вся необходимая конфигурация. Я, конечно, просмотрел эти файлы конфигурации, и они действительно включают предлагаемые решения.
Другие сведения:
- Я уже использовал чистые и восстанавливаемые решения, но ничего не изменил.
- Когда я создаю совершенно новый проект MVC, он работает
- У моего друга такая же проблема, и мы оба используем VS 2015 и Windows 10
- Я все еще могу запустить приложение, и оно действительно работает.
Спасибо заранее.
Ответы
Ответ 1
У меня была эта проблема, несмотря на всю правильную конфигурацию.
Оказалось, что некоторые плохие файлы в кэше компонентов не позволяют представлениям Razor распознавать ViewBag, Model и HtmlHelpers. Удаление этих файлов решило проблему (хорошие версии этих файлов были созданы при следующем открытии Visual Studio).
Файлы находятся здесь:
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
Удалить все четыре файла:
- Microsoft.VisualStudio.Default.cache
- Microsoft.VisualStudio.Default.catalogs
- Microsoft.VisualStudio.Default.err
- Microsoft.VisualStudio.Default.external
Впоследствии я видел ту же проблему на нескольких других машинах разработчика, и это исправление быстро решает ее.
Ответ 2
Обновите номера версий в настройках файла web.config
в папке "Представления".
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Если вы обновили версию MVC через nuget, это должно быть:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Возможно, потребуется обновить другие версии зависимостей. Проблемы с компиляцией и пространством имен в представлениях для помощников и объектов MVC обычно связаны с испорченными web.config
файлами в папках "Просмотр".
Ответ 3
Найдите "веб-страницы: Версия" в настройках приложения и обновите его до версии 3.0.0.0. У моего web.config был
<add key="webpages:Version" value="2.0.0.0" />
и я обновил его до
<add key="webpages:Version" value="3.0.0.0″ />
Ответ 4
Я случайно удалил web.config
из папки "Вид", считая, что это не нужно. Когда я вернул его, он начал работать.
Ответ 5
После пробования всего под солнцем выясняется, что что-то изменило мой System.Web.WebPages.Razor
<sectionGroup>
в /Views/Web.Config
из правильного CamelCase System.Web.WebPages.Razor
на все строчные System.Web.WebPages.Razor
, которые в конечном итоге были моей кончиной.
Надеясь, что это может помочь другой плохой душе с этой проблемой...
Для справки, это правильная запись (для моего сценария)
<sectionGroup name="System.Web.WebPages.Razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Ответ 6
Я столкнулся с этой проблемой больше раз, и, наконец, я обнаружил, что это произошло потому, что папка представлений должна содержать ее собственную веб-конфигурацию
Ответ 7
Иногда бывает недостаточно изменить номера версий в настройках web.config. Эта проблема возникает из-за того, что Visual Studio 2015 не имеет инструментов mvc4.
Решение состоит в том, чтобы обновить ваш проект до MVC 5. Он полностью решает проблему.
Вы можете получить помощь на этой странице. Это ясно объясняет это.
http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2
Кстати, команда Visual Studio заявила, что добавит поддержку mvc4 в Visual Studio 2015 с первым обновлением.
Ответ 8
Я потратил много времени на рабочий день. Я пробовал все в этой (и других) сообщениях, но безрезультатно. В конце концов я обнаружил, что мне нужно открыть проект по-другому. Я только что обновил существующий веб-сайт до Visual Studio 2015, MVC5,.NET framework 4.5.2 и использую Windows 10, но подозреваю, что ответ был бы одинаковым для других версий каждого программного приложения.
Итак, это вариант меню, который я выбрал для открытия веб-сайта:
![введите описание изображения здесь]()
Вместо этого я открыл файл csproj, определяющий проект, используя этот пункт меню:
![введите описание изображения здесь]()
Затем у меня была опция "чистого решения", которую многие другие люди ссылаются на:
![введите описание изображения здесь]()
Однако мне это даже не понадобилось - все просто сработало! Ну, в любом случае, я перешел к следующему набору проблем...
Ответ 9
поздно, но ни один из этих решений не работал у меня.
Я обновился до VS 2017, и сайт работал, но компилятор Visual Studio разбил большинство файлов .cshtml
TL;DR;
mysolution.sln имел неправильную версию
![sln diff]()
поэтому вы хотите создать новое решение с новым VS и сравнить его с вашим и скопировать информацию о версии.
полные этапы обновления:
- обеспечить .sln файл имеет правильную версию для VS
- щелкните правой кнопкой мыши MySolution в VS > Nuget Manager > Обновления > запустите все обновления
- щелкните правой кнопкой мыши MySolution в VS > Application > update Target Framework (4.5.2 в моем случае)
- исправить любые проблемы с версиями в файлах .config(т.е. RAZOR до 3.0.0.0)
- исправить любые проблемы с кодом в компиляторе (для меня ForEach был неоднозначным)
Ответ 10
После того, как я попробовал по крайней мере 90% каждого решения/уловки этого предмета (и других), я наконец решил это !! Оповещение спойлера, нет следов логики в следующем так называемом "решении": Запуск решения с закрытием всех вкладок окончательно сработал, когда больше ничего не избавило бы меня от "ViewBag & Co не существует в текущем контексте"... Вы были предупреждены, никакой долбанной логики!
Надеюсь, это поможет кому-нибудь однажды ^^
Ответ 11
Отключение и включение снова работало для меня.
Вы можете попробовать перезапустить визуальную студию.
Ответ 12
Мне удалось решить проблему, добавив следующее в начало моей страницы .cshtml
@{ViewBag.Title = "Title";}
После перекомпиляции я смог удалить эту строку, и ошибка исчезла.
Ответ 13
Я добавил контроллер
- Шаг 1: Добавить > Класс
- Шаг 2: UserController
- .
- .
- .
создан соответствующий код:
namespace SampleApp.Controllers
{
public class UserController {
}
}
Мои ошибки изменились, изменив Шаг 1 следующим образом:
- Шаг 1: Добавить > Контроллер
- Шаг 2: Пользовательский контроллер
- .
- .
- .
создан соответствующий код:
namespace SampleApp.Controller {
public class UserController : Controller {
}
}
Проблема заключалась в следующем:
Я не унаследовал свой класс от Controller
Другие сообщения в моей ошибке включены - все это были из этой проблемы:
ошибка CS0117: "ModelState" не содержит определения для "IsValid"
error CS0103: имя "RedirectToAction" не существует в текущий контекст
error CS0103: Имя "Вид" не существует в текущем контексте
error CS0103: имя "ViewBag" не существует в текущем контексте
error CS0103: имя "Json" не существует в текущем контексте
Надеемся, что это изменение поможет тем, кто не обратил внимания на их первоначальные шаги.
Ответ 14
Я столкнулся с аналогичной проблемой с одним из моих взглядов. В моем случае я просто очистил решение и попытался восстановить его и его работу.
Ответ 15
Следующая ссылка может помочь вам.
Он покажет вам, в чем может быть проблема
это решит мою проблему. каким-то образом мне пришлось удалить мой файл web.config из папки просмотра.
Ответ 16
Попробовав все остальное и немного расстроившись, я обновил платформу .NET в своем приложении MVC5 с 4.5 до 4.5.2. Как-то это исправило мою проблему. Надеюсь, что это поможет.
Ответ 17
Я решил заменить в web.config
<add key="webpages:Enabled" value="false" />
с
<add key="webpages:Enabled" value="true" />