[dll] 현재 컨텍스트에 ‘ViewBag’이름이 없습니다.

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

“현재 컨텍스트에 ‘ViewBag’이름이 없습니다.”

MVC 3을 제거한 다음 다시 설치했지만 변경 사항이 없습니다.

또한 dll이 GAC에 표시되지 않는다고 생각합니다.

내 문제는 무엇일까요? 또는 dll을 GAC에 추가하는 방법은 무엇입니까?



답변

MVC 관련 Razor 구성을 web.config에 추가해야합니다. 여기 참조 : Razor HtmlHelper 확장 (또는 뷰에 대한 다른 네임 스페이스)을 찾을 수 없음

MVC 3 업그레이드 도구 를 사용하여 올바른 구성 값이 있는지 자동으로 확인하십시오.


답변

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

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


답변

청소하고 재건하십시오. 제 경우에는 효과가있었습니다.


답변

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

뷰 폴더 (안 루트의 Web.config)에서 web.config 파일에서 나는 버전 번호가에 언급 된 업데이트 <configSections>에서 2.0.0.03.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 캐시였습니다. 다음 위치에있는 캐시 파일을 삭제하여 해결할 수 있습니다.

C : \ Users \ your.name.here \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ComponentModelCache

내 프로젝트를 닫고 해당 경로의 파일을 삭제하고 프로젝트를 다시 열고 솔루션을 정리하고 다시 빌드했으며 문제가 해결되었습니다.

다음에 Visual Studio를 시작할 때 파일이 다시 생성됩니다.


답변

나는 똑같은 문제가 있었고 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