it-roy-ru.com

Имя ViewBag не существует в текущем контексте - Visual Studio 2015

Я снова начинаю разрабатывать в ASP.NET и столкнулся с небольшой ошибкой в ​​Visual Studio. Мои файлы .cshtml показывают ошибки при использовании нескольких бритвенных функций. Например, "Имя ViewBag" не существует в текущем контексте ". Вот картинка:

screenshot of problem in visual studio 2015

Я использую демонстрационный проект. Вы можете найти проект здесь: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

Я просмотрел несколько других тем и большинство из них предлагает обновить файл (ы) web.config. Эти 2 файла конфигурации уже присутствуют, и, поскольку это довольно популярное демо, я предполагаю, что в нем есть все необходимые настройки. Я конечно просмотрел эти файлы конфигурации, и они действительно включают предложенные решения.

Другие детали:

  • Я уже использовал clean & rebuild для решения, но это ничего не изменило.
  • Когда я создаю совершенно новый проект MVC, он работает
  • У моего друга такая же проблема, и мы оба используем VS 2015 и Windows 10
  • Я все еще могу запустить приложение, и оно работает.

Заранее спасибо.

81
Michjuh

У меня была эта проблема, несмотря на всю правильную конфигурацию.

Оказалось, что это некоторые плохие файлы в компонентном кэше, мешающие представлениям 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

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

98
Fenton

Обновите номера версий в настройках файла web.config в папке 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" />

Другие версии зависимостей могут также нуждаться в обновлении. Проблемы компиляции и пространства имен в Views для помощников и объектов MVC обычно связаны с испорченными файлами web.config в папках View.

33
Benjamin Anderson

Найдите "webpages: Version" в настройках приложения и обновите его до версии 3.0.0.0. Мой web.config имел

<add key="webpages:Version" value="2.0.0.0" />

и я обновил его до

<add key=”webpages:Version” value=”3.0.0.0″ />
17
Damian Green

После того, как все испробовано под солнцем, выясняется, что что-то изменило мой System.Web.WebPages.Razor<sectionGroup> в /Views/Web.Config с надлежащего System.Web.WebPages.Razor CamelCase на строчный 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"> 
10
jbwebtech

Я случайно удалил web.config из папки View, думая, что это не нужно. Когда я положил его обратно, он начал работать.

9
InGeek

Иногда недостаточно изменить номера версий в настройках 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 с первым обновлением.

4
Burk

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

3
hosam hemaily

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

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

TLDR; 

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

 sln diff

поэтому вы хотите создать новое решение с более новой VS и сравнить его с вашим и скопировать информацию о версии. 

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

  1. убедитесь, что файл .sln имеет правильную версию для VS 
  2. щелкните правой кнопкой мыши MySolution в VS> Nuget Manager> Обновления> запустите все обновления
  3. щелкните правой кнопкой мыши MySolution в VS> Приложение> обновить Target Framework (4.5.2 в моем случае)
  4. исправить любые проблемы с версиями в файлах .config (например, RAZOR до 3.0.0.0)
  5. исправить любые проблемы с кодом в компиляторе (для меня ForEach был неоднозначным)
1
Sonic Soul

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

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

 enter image description here

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

 enter image description here

У меня тогда была опция «чистого решения», на которую ссылались многие другие:

 enter image description here

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

1
Andy Brown

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

@{ViewBag.Title = "Title";}

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

0
Versatile

Я столкнулся с подобной проблемой с одной из моих точек зрения В моем случае я просто очистил решение и попытался восстановить его и он работает.

0
SATYA PRAKASH NANDY

Выключение и включение снова работало на меня. Вы можете попробовать перезапустить Visual Studio.

0
kravits88