Имя 'ViewBag' не существует в текущем контексте



Я пытаюсь использовать ViewBag в своем приложении, у меня есть все последние DLL, последняя версия MVC 3, но все же я все еще получаю ошибку:




" имя 'ViewBag' не существует в текущем контексте"




Я даже удалил, а затем повторно установил MVC 3, и все же нет никаких изменений.



кроме того, я не верю, что dll отображаются в GAC.



в чем может быть моя проблема? Или как добавить библиотеки DLL в GAC?

772   14  

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 ' и скомпилируйте проект. Отменить изменения после компиляции.

Project Output Path

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=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

наконец, в консоли диспетчера пакетов, добавьте update-package

запустите сайт локально и посмотрите все ошибки компиляции, которые были исправлены моим вторым абзацем (соответствующие версии ссылок)

я обновил веб-страницы: версия под in ./ Views / Web.Папка конфигурации, но этот параметр также присутствовал в интернете.конфигурация в корне. Обновить или удалить из корневого веб-сайта.конфигурации

Comments

    Ничего не найдено.