내 응용 프로그램에서 ViewBag를 사용하려고하는데 MVC 3의 최신 버전 인 모든 최신 dll이 있지만 여전히 오류가 발생합니다.
“현재 컨텍스트에 ‘ViewBag’이름이 없습니다.”
MVC 3을 제거한 다음 다시 설치했지만 변경 사항이 없습니다.
또한 dll이 GAC에 표시되지 않는다고 생각합니다.
내 문제는 무엇일까요? 또는 dll을 GAC에 추가하는 방법은 무엇입니까?
답변
MVC 관련 Razor 구성을 web.config에 추가해야합니다. 여기 참조 : Razor HtmlHelper 확장 (또는 뷰에 대한 다른 네임 스페이스)을 찾을 수 없음
MVC 3 업그레이드 도구 를 사용하여 올바른 구성 값이 있는지 자동으로 확인하십시오.
답변
나는 같은 문제를 겪고 있었다. ./Views/Web.config
ASP.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.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 캐시였습니다. 다음 위치에있는 캐시 파일을 삭제하여 해결할 수 있습니다.
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