Имя 'ViewBag' не существует в текущем контексте-Visual Studio 2015
Я начинаю развиваться в ASP.NET снова и я столкнулся с небольшой ошибкой в Visual Studio. Мой. файлы cshtml показывают ошибки при использовании нескольких функций бритвы. Например, " имя 'ViewBag' не существует в текущем контексте". Вот такая картинка:
Я использую демо-проект. Вы можете найти проект здесь:https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject
Я просмотрел несколько других потоков и большинство предлагают обновить веб.конфигурационный файл(ы). Эти 2 конфигурационных файла уже присутствуют, и поскольку это довольно популярная демонстрация, я предполагаю, что в ней есть вся необходимая конфигурация. Я, конечно, просмотрел эти конфигурационные файлы, и они действительно включают в себя предлагаемые решения.
дополнительная информация:
- я уже использовал clean & rebuild в решении, но это ничего не изменило.
- когда я создаю совершенно новый Проект MVC это действительно работает
- у моего друга такая же проблема, и мы оба используем VS 2015 и Windows 10
- я все еще можете запустить приложение и оно работает.
спасибо заранее.
14 ответов:
У меня была эта проблема, несмотря на все правильные настройки.
Он оказался каким-то плохие файлы в кэше компонентов, предотвращающие распознавание представлений Razor ViewBag, Model и HtmlHelpers. Удаление этих файлов решило проблему (хорошие версии этих файлов были созданы в следующий раз, когда я открыл Visual Studio).
файлы находятся здесь:
%LOCALAPPDATA%\Microsoft\VisualStudio.0\ComponentModelCache
удалить четыре файлы:
- Microsoft.VisualStudio.По умолчанию.кэш
- Microsoft.VisualStudio.По умолчанию.каталоги
- Microsoft.VisualStudio.По умолчанию.подстраховались
- Microsoft.VisualStudio.По умолчанию.внешний
впоследствии я видел ту же проблему на нескольких других машинах разработчика, и это исправление быстро решает ее.
обновите номера версий в настройках в папке Views.
<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 обычно связаны с messed up
web.config
файлы в виде папок.
найти "webpages: Version" в appsettings и обновить его до версии 3.0.0.0. Моя паутина.конфиг имел
<add key="webpages:Version" value="2.0.0.0" />
и я обновил его до
<add key=”webpages:Version” value=”3.0.0.0″ />
попробовав все под солнцем, получается что-то изменил мой
System.Web.WebPages.Razor
<sectionGroup>
на/Views/Web.Config
от правильного CamelCaseSystem.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">
я случайно удалены
web.config
из папки просмотра, думая, что это было ненужно. Когда я положил его обратно он начал работать.
иногда недостаточно изменить номера версий в настройках интернета.конфиг. Эта проблема возникает из-за того, что Visual Studio 2015 не имеет инструментария mvc4.
решение заключается в обновлении вашего проекта до MVC 5. Это полностью решает проблему. Вы можете получить помощь на этой странице. Это ясно объясняет это.
By то, как команда Visual Studio объявила, что они добавят поддержку mvc4 в Visual Studio 2015 с первым обновлением.
Я столкнулся с этой проблемой больше раз и, наконец, я обнаружил, что это произошло, потому что папка представлений должна содержать это собственный веб-конфиг
Я потратил много рабочего дня на это. Я пробовал все в этом (и других) постах, но безрезультатно. В конце концов я обнаружил, что мне нужно открыть проект по-другому. Я только что обновил существующий веб-сайт в Visual Studio 2015, в MVC5, .С NET Framework 4.5.2 и использую Windows 10, но подозреваю, что ответ был бы таким же для других версий каждого приложения.
Так что это вариант меню, который я выбирал, чтобы открыть сайт:
вместо этого я открыл файл csproj, определяющий проект, используя эту опцию меню:
У меня тогда был вариант "чистого решения", на который ссылаются многие другие люди:
Впрочем, мне это даже не нужно было - все просто работало! Ну, в любом случае, я перешел к следующему набору проблем ...
опоздал на игру, но ни одно из этих решений работал для меня.
я обновился до VS 2017, и сайт работал, но компилятор Visual Studio сломал большую часть .cshtml файлы
TLDR;
mysolution.у sln была неправильная версия
Итак, вы хотите создать новое решение с новым VS и сравнить его с вашим и скопировать информацию о версии.
полное обновление шаги:
- обеспечить .sln файл имеет правильную версию для VS
- щелкните правой кнопкой мыши MySolution в VS > NuGet Manager > Updates > выполнить все обновления
- щелкните правой кнопкой мыши MySolution в VS > Application > update Target Framework (4.5.2 в моем случае)
- исправьте любые проблемы с версией .конфигурационные файлы (т. е. RAZOR до 3.0.0.0)
- исправьте любые проблемы с кодом в компиляторе (для меня ForEach был неоднозначным)
я смог решить эту проблему, добавив следующее в верхней части моего .cshtml по странице
@{ViewBag.Title = "Title";}
после перекомпиляции я смог удалить эту строку, и ошибка исчезла.
попробовав все остальное и чувствуя себя немного разочарованным, я обновил .NET framework на своем приложении MVC5 с 4.5 до 4.5.2. Как-то это исправило мою проблему. Надеюсь, это поможет.
я добавил контроллер по
- Шаг 1: Добавить > Класс
- Шаг 2: UserController
- .
- .
- .
соответствующий код создано:
namespace SampleApp.Controllers { public class UserController { } }
мои ошибки были изменены, изменив Шаг 1 Как:
- Шаг 1: Добавить > Контроллер
- Шаг 2: Пользовательский Контроллер
- .
- .
- .
соответствующее созданный код:
namespace SampleApp.Controller { public class UserController : Controller { } }
проблема: Я не унаследовал свой класс от контроллер
другие сообщения в моей ошибке включены - все из которых были от этой проблемы:
ошибка CS0117: 'ModelState' не содержит определения для 'IsValid'
ошибка CS0103: имя 'RedirectToAction' не существует в текущий контекст
ошибка CS0103: имя 'View' не имеет существует в текущем контексте
ошибка CS0103: имя 'ViewBag' не существует в текущем контексте
ошибка CS0103: имя 'Json' не существует в текущем контексте
надеюсь, что это изменение поможет тем, кто не обратил внимания на свои первые шаги.