Имя '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 73

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 от правильного 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"> 

я случайно удалены 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

By то, как команда Visual Studio объявила, что они добавят поддержку mvc4 в Visual Studio 2015 с первым обновлением.

Я столкнулся с этой проблемой больше раз и, наконец, я обнаружил, что это произошло, потому что папка представлений должна содержать это собственный веб-конфиг

Я потратил много рабочего дня на это. Я пробовал все в этом (и других) постах, но безрезультатно. В конце концов я обнаружил, что мне нужно открыть проект по-другому. Я только что обновил существующий веб-сайт в Visual Studio 2015, в MVC5, .С NET Framework 4.5.2 и использую Windows 10, но подозреваю, что ответ был бы таким же для других версий каждого приложения.

Так что это вариант меню, который я выбирал, чтобы открыть сайт:

enter image description here

вместо этого я открыл файл csproj, определяющий проект, используя эту опцию меню:

enter image description here

У меня тогда был вариант "чистого решения", на который ссылаются многие другие люди:

enter image description here

Впрочем, мне это даже не нужно было - все просто работало! Ну, в любом случае, я перешел к следующему набору проблем ...

опоздал на игру, но ни одно из этих решений работал для меня.

я обновился до VS 2017, и сайт работал, но компилятор Visual Studio сломал большую часть .cshtml файлы

TLDR;

mysolution.у sln была неправильная версия

sln diff

Итак, вы хотите создать новое решение с новым VS и сравнить его с вашим и скопировать информацию о версии.

полное обновление шаги:

  1. обеспечить .sln файл имеет правильную версию для VS
  2. щелкните правой кнопкой мыши MySolution в VS > NuGet Manager > Updates > выполнить все обновления
  3. щелкните правой кнопкой мыши MySolution в VS > Application > update Target Framework (4.5.2 в моем случае)
  4. исправьте любые проблемы с версией .конфигурационные файлы (т. е. RAZOR до 3.0.0.0)
  5. исправьте любые проблемы с кодом в компиляторе (для меня ForEach был неоднозначным)

я смог решить эту проблему, добавив следующее в верхней части моего .cshtml по странице

@{ViewBag.Title = "Title";}

после перекомпиляции я смог удалить эту строку, и ошибка исчезла.

попробовав все остальное и чувствуя себя немного разочарованным, я обновил .NET framework на своем приложении MVC5 с 4.5 до 4.5.2. Как-то это исправило мою проблему. Надеюсь, это поможет.

выключение и включение снова сработало для меня. Можно попробовать перезапустить visual studio.

я добавил контроллер по

  • Шаг 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' не существует в текущем контексте

надеюсь, что это изменение поможет тем, кто не обратил внимания на свои первые шаги.

Я решил заменить в интернете.конфигурации

 <add key="webpages:Enabled" value="false" />

С

 <add key="webpages:Enabled" value="true" />