현재 컨텍스트에 'ViewBag'이름이 없습니다.-Visual Studio 2015


98

ASP.NET에서 다시 개발하기 시작했는데 Visual Studio에서 작은 오류가 발생했습니다. 내 .cshtml 파일은 몇 가지 면도기 기능을 사용할 때 오류를 표시합니다. 예 : "현재 컨텍스트에 'ViewBag'이름이 없습니다." 다음은 사진입니다.

Visual Studio 2015의 문제 스크린 샷

데모 프로젝트를 사용하고 있습니다. 프로젝트는 https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject 에서 찾을 수 있습니다.

몇 가지 다른 스레드를 살펴본 결과 web.config 파일을 업데이트하는 것이 좋습니다. 이 2 개의 구성 파일은 이미 존재하며 꽤 인기있는 데모이므로 필요한 모든 구성이 포함되어 있다고 가정합니다. 물론 이러한 구성 파일을 살펴 보았으며 실제로 제안 된 솔루션이 포함되어 있습니다.

기타 세부 사항:

  • 나는 이미 솔루션에서 정리 및 재구성을 사용했지만 아무것도 변경하지 않았습니다.
  • 완전히 새로운 MVC 프로젝트를 만들면 작동합니다.
  • 내 친구는 같은 문제가 있으며 우리 둘 다 VS 2015와 Windows 10을 사용합니다.
  • 여전히 응용 프로그램을 실행할 수 있으며 작동합니다.

미리 감사드립니다.


여전히 실행되면 백그라운드 컴파일러의 오류 일뿐입니다. <Projectname> .suo 파일을 삭제 해보십시오.
Henk Holterman 2015 년

어떤 프로젝트를 실행하고 있습니까? 기본? crud, 라우팅?
Prashant Ghimire

1
@Henk 불행히도 작동하지 않았습니다.
Michjuh

@Prashant 기본 프로젝트와 라우팅 프로젝트를 모두 시도했습니다. 이 문제는 둘 다에서 발생합니다.
Michjuh

해결 했습니까? 나는 같은 문제 @Michjuh했다
버크

답변:


124

모든 올바른 구성에도 불구하고이 문제가 발생했습니다.

Razor 뷰가 ViewBag, Model 및 HtmlHelpers를 인식하지 못하도록 구성 요소 캐시의 일부 잘못된 파일로 판명되었습니다 . 이 파일을 삭제하면 문제가 해결되었습니다 (다음에 Visual Studio를 열 때 이러한 파일의 좋은 버전이 생성되었습니다).

파일은 다음 위치에 있습니다.

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

4 개의 파일을 모두 삭제합니다.

  • Microsoft.VisualStudio.Default.cache
  • Microsoft.VisualStudio.Default.catalogs
  • Microsoft.VisualStudio.Default.err
  • Microsoft.VisualStudio.Default.external

이후에 다른 여러 개발자 컴퓨터에서 동일한 문제를 보았으며이 수정으로 신속하게 해결됩니다.


9
훌륭합니다.이 문제가 해결되었습니다. 또한 임시 ASP.NET 파일을 삭제하는 것도 도움이된다는 것을 발견했습니다. C : \ Users \ your.name.here \ AppData \ Local \ Temp \ Temporary ASP.NET Files
Kevin

이것은 나에게도 수정되었습니다. 게시 해 주셔서 감사합니다!
Caverman

이것은 .net 4를 4.5.2로 업그레이드하고 mvc 3을 5로 업그레이드하여 발생한 내 문제를 해결했습니다
Joe Phillips

내 문제는 내 모델의 속성이 인식되지 않는다는 것입니다. 이 수정은 내 문제를 즉시 해결했습니다.
jkerak

5
내 폴더는 VS 2017에 대한 15.0_7e8de76c \ ComponentModelCache입니다
케빈 .NET

40

web.configViews 폴더 의 파일 설정에서 버전 번호를 업데이트 합니다.

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

너겟을 통해 MVC 버전을 업데이트 한 경우 다음과 같아야합니다.

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

다른 종속성 버전도 업데이트해야 할 수 있습니다. MVC 도우미 및 개체에 대한보기의 컴파일 및 네임 스페이스 문제는 일반적으로 web.config보기 폴더 내에서 엉망이 된 파일 과 관련이 있습니다.


9
5.2.2.0 대신 5.2.0.0의 버전 번호를 입력해야했지만 이것은 나를 위해 일했습니다. 참조> System.Web.MVC로 이동하고 속성을 선택하여 사용중인 버전을 확인할 수 있습니다. 도움을 주셔서 감사합니다
user2233949 jul.

@ user2233949, @Benjamin MVC 버전을 사용 4.0.0.0하고 있습니다. 속성에서 볼 수 있습니다. 제 경우에는 무엇을 수정해야합니까?
Zeeshan

모든 web.config 파일을 확인하고 모든 파일이 올바른 호스트 버전을 사용하고 있는지 확인하십시오. 오버뷰 폴더에서 설정을 재정의 한 경우 문제가 해결되지 않고 미끄러질 수 있습니다.
Benjamin Anderson

1
나는 다른 모든 제안을 시도했지만 이것은 5.2.3.0을 사용하여 나를 위해 일했습니다. 감사합니다 Benjamin
Mitch

1
이것은 저에게 정답이었습니다. 또한의 Web.config를 변경 한 후, 모든 종료하는 것을 잊지 마세요 *.cshtml*.vbhtml파일을 청소 및 솔루션을 다시 빌드합니다. VS 2019 16.1.2
스테판 Havránek

22

appsettings에서 "webpages : Version"을 찾아 3.0.0.0 버전으로 업데이트합니다. 내 web.config에는

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

그리고 나는 그것을 업데이트했습니다

<add key=”webpages:Version value=”3.0.0.0 />

1
나는 두 줄을 (webpages.Version, webpages.Enabled) 제거 및 MVC 5.2에서 잘 작동 보인다
Grappachu에게

이것은 Web.config의 두 버전, 프로젝트 루트 및 모든 영역의 Web.config에서도 업데이트되어야합니다.
Sonu K

감사합니다. 제 경우에 문제가있는 태그는 <configuration>-<configSections>-<sectionGroup name = "system.web.webPages.razor"> 아래에 있습니다. <sectionGroup name = "system.web.webPages.razor">를 변경해야합니다. <section name = "host"> 및 <section name = "pages"> 버전 = 3.0.0.0 사용
Hong

어디서나 (포함 Temporary ASP.NET Files) 캐시를 제거해도 도움이되지 않았지만이 답변은 .
wha7ever

이 설정 무엇을 의미 합니까? 무엇에 해당합니까? 앱에서 사용하는 버전을 어떻게 결정합니까?
jpmc26

18

불필요하다고 생각 web.config하여 실수로 Views폴더 에서 제거 했습니다. 다시 넣으면 작동하기 시작했습니다.


13

태양 아래 모든 것을 시도 후에는 밝혀 뭔가 내 수정 한 System.Web.WebPages.Razor <sectionGroup>의를 /Views/Web.Config적절한 낙타 표기법에서 System.Web.WebPages.Razor모두 소문자로 system.web.webpages.razor궁극적으로 나의 죽음이었다.

이것이이 문제로 다른 불쌍한 영혼을 도울 수 있기를 바랍니다.

참고로 이것은 올바른 항목입니다 (내 시나리오의 경우).

<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"> 

3
내 것은 모두 소문자 였지만 내 문제를 해결하지 못했습니다.
Paul Totzke

이런 잉어. 이것은 또한 나의 죽음이었습니다. 나는 당신이 이것을 발견했다는 것을 믿을 수 없습니다, @jbwedtech.
Luke Puplett

나도 이것들을 소문자로 사용했고 케이스를 변경해도 문제가 해결되지 않았습니다.
Andy Brown

5

때때로 web.config의 설정에서 버전 번호를 변경하는 것으로 충분하지 않습니다. 이 문제는 Visual Studio 2015에 mvc4 도구가 없기 때문에 발생합니다.

해결책은 프로젝트를 MVC 5로 업그레이드하는 것입니다. 문제가 완전히 해결됩니다. 이 페이지에서 도움을받을 수 있습니다. 그것은 그것을 명확하게 설명합니다.

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web- api-2

그런데 Visual Studio 팀은 첫 번째 업데이트와 함께 Visual Studio 2015에 mvc4 지원을 추가 할 것이라고 선언했습니다.


5

나는이 문제에 더 많이 직면했고 마침내보기 폴더에 자체 웹 구성이 포함되어야하기 때문에 발생했다는 것을 발견했습니다.


2
그러나 그 web.config에 무엇이 있어야합니까? 자동 생성되지 않아야합니까? (업데이트) 가져야 할 항목과 생성 방법을 찾았습니다. stackoverflow.com/questions/29305914/…
drzaus

예, 맞습니다. 제 프로젝트에서 Web.Config는 이전에 존재하지 않았습니다 (예 : 자동으로 생성되어야하지만 이전 개발자의 프로젝트를 가져 왔지만 삭제 한 이유는 확실하지 않습니다). Views 폴더에 대한 Web.Config 파일을 추가 한 후 작동했습니다.
user3559462

2

게임에 늦었지만 이러한 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.

VS 2017로 업그레이드했고 사이트가 작동했지만 Visual Studio 컴파일러가 대부분의 .cshtml 파일을 손상 시켰습니다.

TLDR;

mysolution.sln의 버전이 잘못되었습니다.

sln diff

따라서 최신 VS로 새 솔루션을 만들고이를 자신의 솔루션과 비교하고 버전 정보를 복사하려고합니다.

전체 업그레이드 단계 :

  1. .sln 파일에 VS에 대한 올바른 버전이 있는지 확인하십시오.
  2. VS에서 MySolution을 마우스 오른쪽 버튼으로 클릭> Nuget Manager> 업데이트> 모든 업데이트 실행
  3. VS> Application> Update Target Framework (제 경우에는 4.5.2)에서 MySolution을 마우스 오른쪽 버튼으로 클릭합니다.
  4. .config 파일의 모든 버전 문제 수정 (예 : RAZOR에서 3.0.0.0으로)
  5. 컴파일러의 모든 코드 문제 수정 (ForEach는 모호했습니다)

내 프로젝트는 VS2013에서 시작되었으며 VS2017을 쳤을 때 이러한 오류가 표시되기 시작했지만 모든 것이 정상적으로 컴파일되었으므로 진행 상황을 파악하려고 노력했지만 너무 어렵지는 않았습니다. 뷰를 열면 많은 오류가 발생했기 때문에 문제가되었습니다. 나는 지금 VS2019에 있으며 당신의 수정을 우연히 발견했습니다. 당신은 락! 내 .sln은 14.0.25123.0이고 16.3.9입니다. 또한 프레임 워크의 모든 버전 문제를 수정했습니다. 모든 업데이트를 완전히 테스트 할 시간이 없기 때문에 (고맙게도) 너겟 패키지를 업데이트 할 필요가 없었습니다.
DaBlue

1

나는 이것에 근무하는 하루 동안 잘 낭비했습니다. 나는이 (및 다른) 게시물의 모든 것을 시도했지만 아무 소용이 없었습니다. 결국 저는 다른 방식으로 프로젝트를 열어야한다는 것을 알게되었습니다. 방금 기존 웹 사이트를 Visual Studio 2015, MVC5, .NET 프레임 워크 4.5.2로 업그레이드했고 Windows 10을 사용하고 있지만 각 소프트웨어 응용 프로그램의 다른 버전에 대한 대답이 동일했을 것이라고 생각합니다.

이것이 제가 웹 사이트를 열기로 선택한 메뉴 옵션입니다.

여기에 이미지 설명 입력

대신이 메뉴 옵션을 사용하여 프로젝트를 정의하는 csproj 파일을 열었습니다.

여기에 이미지 설명 입력

그런 다음 다른 많은 사람들이 참조하는 "깨끗한 솔루션"옵션을 사용했습니다.

여기에 이미지 설명 입력

그러나 나는 이것을 필요로하지 않았습니다. 음, 어쨌든 다음 문제 세트로 넘어갔습니다 ...


1

컨트롤러를 추가했습니다.

  • 1 단계 : 추가> 클래스
  • 2 단계 : UserController
  • .
  • .
  • .

생성 된 해당 코드 :

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

1 단계를 다음과 같이 변경하여 내 오류가 변경되었습니다.

  • 1 단계 : 추가> 컨트롤러
  • 2 단계 : 사용자 컨트롤러
  • .
  • .
  • .

생성 된 해당 코드 :

namespace SampleApp.Controller {
    public class UserController : Controller {
    }
}

문제는 컨트롤러 에서 내 클래스를 상속하지 않았습니다.

내 오류에 포함 된 다른 메시지는 모두이 문제에서 비롯된 것입니다.

오류 CS0117 : 'ModelState'에 'IsValid'에 대한 정의가 없습니다.

오류 CS0103 : 현재 컨텍스트에 'RedirectToAction'이름이 없습니다.

오류 CS0103 : 현재 컨텍스트에 'View'라는 이름이 없습니다.

오류 CS0103 : 현재 컨텍스트에 'ViewBag'이름이 없습니다.

오류 CS0103 : 'Json'이름이 현재 컨텍스트에 없습니다.

이 변화가 초기 단계에서주의를 기울이지 않은 사람들에게 도움이되기를 바랍니다.


1

이 주제 (및 기타)의 모든 솔루션 / 트릭의 90 % 이상을 시도한 후 마침내 해결했습니다 !! 스포일러 경고, 논리의 흔적이 없습니다. 소위 "솔루션"은 다음과 같습니다. 모든 탭을 닫은 상태에서 솔루션을 실행하면 마침내 작동했습니다. 당신은 경고를 받았습니다, 이상한 논리가 아닙니다!

언젠가 누군가에게 도움이 되길 바랍니다 ^^


1

제 경우에는 하나의 프로젝트에서만 내 PC에서만이 문제가 발생했습니다. 내 프로젝트는 VS2012에서 잘 작동했지만 VS2017에서 열었을 때이 문제가 발생했습니다.

여기에서 저에게 가장 큰 문제는 캐시였습니다. 내 프로젝트는 Razor 및 MVC 용 dll의 이전 캐시 버전을 가리키고 있었고 ViewBag와 같은 최신 버전에 추가 된 기능을 찾지 못했습니다. ViewBag는 Razor 버전 3에 추가되었지만 Razor 버전 2를 캐시했기 때문에 ViewBag를 찾을 수 없었습니다 (그러나 버전 2에있는 다른 항목을 찾을 수 있음). 그러나 수락 된 답변과 같이 캐시를 지우는 것만으로 문제가 해결되지 않았습니다. Razor의 경우 "2 대신 버전 3 사용", MVC의 경우 "4 대신 버전 5 사용"으로 구성 파일을 변경 한 다음 VS를 닫고 캐시를 제거하고 프로젝트를 열고 다시 빌드해야했습니다. 그런 다음 문제가 해결되었습니다. 다음은 더 자세한 지침입니다.

문제 해결에 도움이 된 일련의 변경 사항은 다음과 같습니다.

  1. "Views"폴더의 Web.config에서 모든 위치를 변경합니다.
    • MVC 버전은 4.0.0.0에서 5.0.0.0으로 설정됩니다.
    • Razor 버전은 2.0.0.0에서 3.0.0.0으로 설정됩니다.

제 경우에는 다음과 같습니다.

<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
    <section name="host" type="... Version=3.0.0.0 ..." .../>
    <section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
    ...
    pageParserFilterType="... Version=5.0.0.0 ..."
    pageBaseType="... Version=5.0.0.0 ..."
    userControlBaseType="... Version=5.0.0.0 ...">
    <controls>
        <add assembly="... Version=5.0.0.0 ..." ... />
    </controls>
</pages>

(참고 : 1) 버전이 다를 수 있습니다. 제 경우에해야 할 일을 말하고 있습니다. 2) 간결함을 위해 "..."로 일부 항목을 생략했습니다. 3) 5.3.2.0과 같은 MVC 버전이 있더라도 Razor 버전과 동일하게 5.0.0.0을 입력해야합니다. 3.0.0.0에 모두 0을 입력해야합니다.)

  1. 기본 구성 파일 (최상위 수준의 파일) webPages:version에서 2.0.0.0에서 3.0.0.0으로 변경 합니다.

  2. 이 변경 사항은 아마도 솔루션에 영향을 미치지 않았지만 여전히 언급하겠습니다. "Views"폴더의 <namespaces>섹션이 다음과 같이 프로젝트의 루트에있는 기본 .conifg 파일과 동일한 내용을 가지고 있는지 확인하십시오 .

<namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
</namespaces>
  1. 마지막으로 VS를 닫습니다. %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCacheFenton이 (현재) 수락 한 답변에서 제안한 것처럼 (또는 올바른 경로가 무엇이든) 모든 캐시 파일을 삭제하십시오 . .scan해당 답변에 언급되지 않은 파일 도 삭제 하십시오. 완료되면 VS를 열고 프로젝트를 정리하고 다시 빌드하십시오. 상황이 해야 지금 작동. 그것은 나를 위해 일했습니다.

0

그것을 껐다가 다시 켜는 것이 나를 위해 일했습니다. Visual Studio를 다시 시작할 수 있습니다.


농담 대답처럼 들리지만 이것이 나를 위해 고정 된 것입니다. 어깨를 으쓱
Douglas Timms

0

내 .cshtml 페이지 상단에 다음을 추가하여 문제를 해결할 수있었습니다.

@{ViewBag.Title = "Title";}

다시 컴파일 한 후이 줄을 삭제할 수 있었고 오류가 사라졌습니다.


0

나는 내 견해 중 하나와 비슷한 문제에 직면했다. 제 경우 에는 솔루션을 정리하고 다시 빌드 하려고 시도 했습니다 .



0

나는 같은 문제에 직면했다. Clean, Build 및 Rebuild 솔루션을 시도했지만 작동하지 않았습니다.

그래서 마침내 아래와 같이했습니다.

  1. Windows 키 + R을 누릅니다.
  2. % temp % 유형
  3. Enter를 누르 십시오
  4. 모든 파일 삭제 (삭제되지 않은 파일이 거의없는 경우 문제 없음)

여러분들에게도 효과가 있기를 바랍니다.


0

내 클라이언트의 응용 프로그램 중 하나를 ASP MVC 4에서 ASP MVC 5로 업그레이드 한 후 cshtml 페이지에서 Html Helpers 및 ViewBag와 관련된 디자이너 오류가 발생했습니다.

이러한 문제를 해결하려면 다음을 수행하십시오. Nuget에서 Asp.NET 웹 도우미 라이브러리 설치 프로젝트의 Web.config를 열고 예를 들어 Nuget 패키지를 설치할 때 바인딩이 업데이트되지 않은 경우 바인딩을 업데이트합니다.

<dependentAssembly>
  <assemblyIdentity name=”System.Web.Mvc publicKeyToken=”31bf3856ad364e35 />
  <bindingRedirect oldVersion=”0.0.0.0-5.2.2.0 newVersion=”5.2.2.0 />
</dependentAssembly>

appsettings에서 “webpages : Version” 을 찾아 3.0.0.0 버전으로 업데이트합니다. 내 web.config에는

그리고 나는 그것을 업데이트했습니다

Visual Studio를 다시 시작하고 다시 빌드하십시오. 프로젝트의 bin 폴더를 삭제해야 할 수도 있습니다.

이것을 방문하십시오 : https://lajak.wordpress.com/2014/11/16/asp-mvc-5-viewbag-does-not-exist-in-the-current-context/


-1

다른 모든 것을 시도하고 약간 좌절감을 느낀 후 MVC5 앱의 .NET 프레임 워크를 4.5에서 4.5.2로 업그레이드했습니다. 어떻게 든 내 문제를 해결했습니다. 도움이되기를 바랍니다.


-4

web.config에서 교체를 해결했습니다.

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

 <add key="webpages:Enabled" value="true" />

그냥이 다운 된 투표 이유에 추가 - 실제보기 내가 믿는 브라우저에서 볼 수하는 것이 허용
mtbennett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.