[dll] 'ViewBag'이름이 현재 컨텍스트에 존재하지 않습니다.



Answers

나는 같은 문제를 겪고 있었다. ASP.NET MVC 템플릿을 사용하는 대신 빈 ASP.NET 응용 프로그램에서 프로젝트를 만들었 기 때문에 ./Views/Web.config 파일이 누락되었습니다.

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 파일을 추가하면이 문제가 해결되었습니다.

Question

내 응용 프로그램에서 ViewBag를 사용하려고하는데, 최신 DLL 인 MVC 3의 최신 버전이 있지만 아직 오류가 발생합니다.

" 'ViewBag'이라는 이름이 현재 컨텍스트에 존재하지 않습니다"

나는 심지어 MVC 3을 제거한 다음 다시 설치했지만 변경 사항은 없습니다.

또한, 나는 DLL이 GAC에 나타나고 있다고 생각하지 않습니다.

내 문제가 뭐지? 또는 DLL을 GAC에 추가하는 방법은 무엇입니까?




제 경우에는 웹 페이지를 변경하십시오 : 버전이 적절한 값으로 변경되어 문제가 해결되었습니다. 올바른 값은 3.0.0.0 대신 2.0.0.0입니다.

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



사용 가능한 모든 답을 시도했지만 여전히 답을 찾을 수없는 경우이 문제를 해결할 수 있습니다. 디버그, 릴리스 등의 다른 솔루션 구성이있는 경우 프로젝트 출력 경로를 'bin'으로 설정하고 프로젝트를 컴파일하십시오. 컴파일 후 변경 사항 되돌리기.

VS는 bin 폴더에서 dll을 찾습니다.




./Views/Web.Config 파일이 있었지만 사이트를 게시 한 후에이 오류가 발생했습니다. 파일의 빌드 작업 속성이 Content 대신 None 으로 설정되었음을 나타냅니다. Content 변경하면 게시가 올바르게 작동합니다.




Visual Studio 2015에서 MVC 5로 업그레이드 된 솔루션에서 같은 문제가 발생했습니다.

Views 폴더 (루트 web.config 아님) 내의 web.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>



나는 똑같은 문제가 있었고 crimbo는 나에게 적절한 단서를 주었다. 그것은 ./Views/Web.config 파일 이었지만 존재하는 이름 공간을 포함하고 있지 않다.

저는 빈 MVC5 프로젝트를 생성하고 ./Views/Web.config를 기존 프로젝트에 가져 왔고 모든 ViewBag 사용시 빨간색 파도가 사라졌습니다!




./Views/Web.Config 폴더의 웹 페이지 버전을 업데이트했지만이 설정은 root의 web.config에도 있습니다. 루트 web.config에서 둘 다 업데이트하거나 제거하십시오.




Links