Я пытаюсь использовать ViewBag в своем приложении, у меня есть все последние библиотеки DLL, последняя версия MVC 3, но я все еще получаю сообщение об ошибке:
«Имя ViewBag не существует в текущем контексте»
Я даже удалил, а затем снова установил MVC 3, но никаких изменений нет.
Кроме того, я не верю, что библиотеки DLL появляются в GAC.
В чем может быть моя проблема? Или как добавить dll в GAC?
dll
asp.net-mvc-3
gac
viewbag
эфлеминг
источник
источник
Ответы:
Вам необходимо добавить конфигурацию Razor, специфичную для MVC, в ваш web.config. См. Здесь: Расширения Razor HtmlHelper (или другие пространства имен для представлений) не найдены
Используйте инструмент обновления MVC 3, чтобы автоматически убедиться, что у вас правильные значения конфигурации.
источник
~/Views
места, скопируйте их также~/Views/Web.config
в это место.У меня была такая же проблема. Оказалось, что мне не хватало
./Views/Web.config
файла, потому что я создал проект из пустого приложения ASP.NET вместо использования шаблона ASP.NET MVC.Для ASP.NET MVC 5 ванильный
./Views/Web.config
файл содержит следующее:<?xml version="1.0"?> <!-- https://stackoverflow.com/a/19899269/178082 --> <configuration> <configSections> <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"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor> <appSettings> <add key="webpages:Enabled" value="false" /> </appSettings> <system.web> <httpHandlers> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> <!-- Enabling request validation in view pages would cause validation to occur after the input has already been processed by the controller. By default MVC performs request validation before a controller processes the input. To change this behavior apply the ValidateInputAttribute to a controller or action. --> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> </system.webServer> </configuration>
Добавление
./Views/Web.config
файла, содержащего это содержимое, устранило эту проблему для меня.источник
<add namespace="System.Web.Optimization"/>
Попробуйте почистить и перестроить. В моем случае это сработало.
источник
У меня была такая же проблема в решении, которое было обновлено до MVC 5 в Visual Studio 2015.
В файле web.config в папке Views (а не в корневом файле web.config) я обновил номер версии, указанный в
<configSections>
from2.0.0.0
to3.0.0.0
.<configuration> <configSections> <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"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections>
источник
Попробовав разные вещи, оказалось, что это был кеш VS. Вы можете решить эту проблему, удалив файлы кеша, расположенные в:
Я закрыл свой проект, удалил файлы на этом пути и снова открыл свой проект, очистил решение и снова построил его, и проблема была решена.
Файлы будут созданы заново при следующем запуске Visual Studio.
источник
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
У меня была та же проблема, и crimbo дал мне правильную подсказку, это было вызвано файлом ./Views/Web.config, который присутствовал, но не содержал нужных пространств имен, я думаю ...
Я создал пустой проект MVC5 и импортировал его ./Views/Web.config в свой существующий проект, и красные волны под каждым использованием ViewBag исчезли!
источник
Если вы используете Visual Studio 2013 и вам нравится использовать MVC 3, вы получите эту ошибку, потому что Visual Studio 2013 не поддерживает MVC 3 изначально (даже если вы измените ./Views/web.config), только MVC 4: https: // msdn .microsoft.com / en-us / library / hh266747.aspx
источник
У меня был
./Views/Web.Config
файл, но эта ошибка произошла после публикации сайта. Оказывается, для свойства действия сборки в файле было установлено значениеNone
вместоContent
. Измените это, чтобыContent
публикация работала правильно.источник
У меня возникла эта проблема после изменения пространства имен приложения по умолчанию в диалоговом окне «Свойства».
./Views/Web.Config содержал ссылку на старое пространство имен
источник
В моем случае изменение веб-страницы: Версия на правильное значение решило мою проблему, для меня правильное значение было (2.0.0.0 вместо 3.0.0.0):
<appSettings> <add key="webpages:Version" value="2.0.0.0"/> <add key="webpages:Enabled" value="false"/>
источник
После опробования всех подходов ни один из них у меня не работал, поскольку все, что у меня было, это правильные конфигурации. наконец-то
Удаление из системы всех файлов из «temp» и «% temp%» помогло решить эту проблему.
Откройте команду «Выполнить» (Windows + R), введите указанные выше строки и удалите все временные файлы.
источник
Если вы попробовали все доступные ответы, но все еще не можете найти ответ, это может решить проблему. Если у вас есть разные конфигурации решений, такие как Debug, Release и т. Д., Установите выходной путь проекта на bin и скомпилируйте проект. Отменить изменения после компиляции.
VS ищет библиотеки DLL в папке bin
источник
Я уже пытался удалить файл bin и obj и перезапустить VS, и мне не повезло.
У меня тоже была эта проблема много раз, и каждый раз ее сложно решать. Часто это происходит из-за того, что файл web.config не имеет правильной версии одной из ссылок. Это означает, что щелкните ссылку в Visual Studio, чтобы просмотреть версию на вкладке свойств, а затем сопоставьте ее с версией в файлах web.config.
Другой способ - (если возможно) обновить платформу .net до более поздней версии, а затем удалить файлы bin / obj и перезапустить Visual Studio. Я могу только предположить, что это что-то меняет в
Быстрая проверка различий между файлом csproj на самом деле не показывает каких-либо серьезных различий ... Но различия, которые он показал, были (я добавил (удалил), чтобы показать старую строку)
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> (remove) <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>(remove) <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
В файле Web.Config (не в View)
<add key="webpages:Version" value="2.0.0.0" /> (remove) <add key="webpages:Version" value="3.0.0.0"/>
Он также добавлен (в тот же файл web.config), но я вручную удалил его
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
Наконец, в консоли диспетчера пакетов добавьте
update-package
Запустите веб-сайт локально и посмотрите все ошибки компиляции, которые были исправлены моим вторым абзацем (соответствует версиям ссылок)
источник
Я обновил веб-страницы: версия в папке ./Views/Web.Config, но этот параметр также присутствовал в web.config в корневом каталоге. Обновите оба или удалите из корневого web.config
источник
Как уже упоминал @Wilson Vallecilla. Чтобы удалить кеш, выполните следующие действия:
Пожалуйста, следуйте приведенному ниже пути, чтобы найти файлы:
C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
Я закрыл свой проект, удалил файлы на этом пути и снова открыл свой проект, очистил решение и снова построил его, и проблема была решена.
Также помогает удаление временных файлов ASP.NET. C: \ Users \ your.name.here \ AppData \ Local \ Temp \ Temporary ASP.NET Files.
У меня это работает.
Благодарность!
источник
Для MVC5, если вы создаете приложение с нуля. Вам нужно добавить файл web.config в папку Views и вставить в него следующий код.
<?xml version="1.0"?> <configuration> <configSections> <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"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor> </configuration>
Обратите внимание, что для MVC 3 вам нужно будет изменить версию на 3.0.0.0 на
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Возможно, вам придется закрыть и снова открыть страницу * .cshtml, чтобы увидеть изменения.
источник