Имя 'ViewBag' не существует в текущем контексте
Я пытаюсь использовать ViewBag в своем приложении, у меня есть все последние DLL, последняя версия MVC 3, но все же я все еще получаю ошибку:
" имя 'ViewBag' не существует в текущем контексте"
Я даже удалил, а затем повторно установил MVC 3, и все же нет никаких изменений.
кроме того, я не верю, что dll отображаются в GAC.
в чем может быть моя проблема? Или как добавить библиотеки DLL в GAC?
14 ответов:
вам нужно добавить конфигурацию бритвы MVC-specific в свой веб.конфиг. Смотрите здесь: расширения Razor HtmlHelper (или другие пространства имен для представлений) не найдены
использовать MVC 3 upgrade tool автоматически обеспечивают правильные значения настроек.
у меня была та же проблема. Оказалось, что я пропустил
./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файл, содержащий это содержимое, исправил эту проблему для меня.
у меня была та же проблема в решении, которое было обновлено до MVC 5 в Visual Studio 2015.
в интернете.конфигурационный файл в папке Views (не корневой веб.config), я обновил номер версии, указанный в
<configSections>С2.0.0.0до3.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 cache. Вы можете решить эту проблему, удалив файлы кэша, расположенные в:
C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
Я закрыл свой проект, удалил файлы по этому пути и снова открыл свой проект, очистил решение и построил его снова, и проблема была решена
файлы будут воссозданы при следующем запуске Visual Студия
У меня была такая же проблема и рождественских дал мне правильный ключ, это было вызвано ./ Views / Web.конфигурационный файл, который присутствовал, но не содержал правильных пространств имен, я думаю...
Я создал пустой проект MVC5 и импортировал его ./ Views / Web.конфигурация в мой существующий проект и красные волны при каждом использовании 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
Я но эта ошибка произошла после публикации сайта. Оказывается, свойство build action в файле было установлено в
NoneвместоContent. Изменение этого наContentразрешена корректная работа публикации.
У меня была эта проблема после изменения пространства имен по умолчанию приложения в диалоговом окне свойств.
The ./ Views / Web.Конфиг содержал ссылку на старое пространство имен
в моем случае изменение веб-страницы: Version на правильное значение решило мою проблему, для меня правильное значение было (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% " из системы помогло решить эту проблему.
откройте команду Run (Windows+R) и введите выше строк и удалите все временные файлы.
Если вы перепробовали все доступные ответы и до сих пор не можете найти ответ, это может решить проблему. Если у вас есть различные конфигурации решений, такие как Debug, Release и т. д затем установите путь вывода проекта в ' bin ' и скомпилируйте проект. Отменить изменения после компиляции.
VS ищет DLL в папке bin
Я уже пытался удалить файл bin и obj и перезапустить VS, и мне не повезло.
у меня также была эта проблема много раз, и это боль, чтобы решить каждый раз. Часто это происходит из-за интернета.конфигурационный файл не имеет правильной версии одной из ссылок. Это означает, что щелкните ссылку в Visual Studio, чтобы увидеть версию на вкладке свойства, а затем сопоставьте ее с версией в интернете.конфигурационный файл.
другой способ (если это возможно) обновление до более поздней версия платформы .net framework, а затем удаление файлов 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>в Интернете.Конфигурационный файл (не тот, что в поле зрения)
<add key="webpages:Version" value="2.0.0.0" /> (remove) <add key="webpages:Version" value="3.0.0.0"/>Он также добавил (к той же сети.конфигурационный файл) но я вручную удалил его
<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запустите сайт локально и посмотрите все ошибки компиляции, которые были исправлены моим вторым абзацем (соответствующие версии ссылок)
я обновил веб-страницы: версия под in ./ Views / Web.Папка конфигурации, но этот параметр также присутствовал в интернете.конфигурация в корне. Обновить или удалить из корневого веб-сайта.конфигурации

Comments