[asp.net-mvc] MVC 4 @Scripts“존재하지 않습니다”

방금 ASP.NET MVC 4 프로젝트를 만들고 Visual Studio 2012 RC를 사용하여 컨트롤러 및 면도기보기 IndexCreate작업 을 만들었습니다 .

응용 프로그램을 실행하고 Create보기를 탐색 할 때 다음 오류가 표시되었습니다.

컴파일러 오류 메시지 : CS0103 : 현재 컨텍스트에 ‘Scripts’라는 이름이 없습니다.

문제는 View의 맨 아래에 자동으로 추가 된 다음 코드입니다.

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

왜 스크립트가 존재하지 않습니까?

Assembly System.Web.Mvc.dll, v4.0.0.0의 기본 웹 페이지 클래스를 보았습니다.

다음과 같은 도우미 속성을 사용할 수 있습니다.

  • 아약스
  • HTML
  • URL

그러나 스크립트라는 이름은 없습니다.

어떤 아이디어?

편집하다:

내 Web.config 파일은 다음과 같습니다 (Visual Studio에서 만든 파일에서 변경되지 않음).

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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>

편집 # 2 :

사람들은 @Scripts도우미 사용에 대해 블로깅하고 있습니다 .

그러나 새로운 Windows 8 설치에 Visual Studio 2012 RC를 방금 설치 @Scripts했지만 Visual Studio가 생성 된 View에 추가하더라도 여전히 사용할 수 없습니다 !

솔루션은 다음과 같습니다.

결국 업데이트가 문제를 해결하는 것처럼 보였으므로 닫는 방법을 잘 모르겠습니다. 새 프로젝트를 사용하여 새로 설치를 수행했는지 다시 확인했습니다. 그러나 내가 만든 동일한 실패한 프로젝트는 다양한 업데이트와 수동 개입 없이도 잘 작동합니다. 모든 생각에 감사하지만 당시에는 분명히 문제가있었습니다.)



답변

여기서 핵심은 추가하는 것입니다

 <add namespace="System.Web.Optimization" /> 

web.config 파일 모두에. 내 시나리오는 프로젝트와 기본 / 루트 web.config 모두에서 System.Web.Optimization 참조를 가지고 있었지만 @Scripts는 여전히 제대로 작동하지 않았습니다. 네임 스페이스 참조를 Views web.config 파일에 추가해야 작동합니다.

최신 정보:

MVC 4 System.Web.Optimization의 출시 이후 더 이상 사용되지 않습니다. 빈 솔루션으로 시작하는 경우 다음 nuget 패키지를 설치해야합니다.

Install-Package Microsoft.AspNet.Web.Optimization

web.config 파일에서 여전히 System.Web.Optimization을 참조해야합니다. 자세한 정보는 다음 주제를 참조하십시오.

MVC-3-converted-to-4 앱에 대한 System.Web.Optimization에 대한 참조를 추가하는 방법

많은 사람들이 지적했듯이 위의 단계 후에 VS를 다시 시작 해야이 작업을 수행 할 수 있습니다.


답변

@Styles@Scripts에서 제공하는 2 개의 새로운 도우미입니다 System.Web.Optimization라이브러리. 이름에서 알 수 있듯이 CSS와 JavaScript 파일 또는 리소스를 각각 묶고 축소합니다.

지시문 또는 다음을 통해 네임 스페이스 System.Web.Optimization를 포함 시키십시오.@usingweb.config

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification

최신 정보

Microsoft는 번들링 / 축소를라는 별도의 패키지로 옮겼습니다 Microsoft.AspNet.Web.Optimization. nuget 에서 어셈블리를 다운로드 할 수 있습니다 .

게시물 이 도움이 될 것입니다.


답변

위에서 다른 작은 단계가 누락되어 다른 게시물에서 발견했습니다. 추가 후

<add namespace="System.Web.Optimization" />

당신에 ~/Views/web.config네임 스페이스, 닫고 다시 Visual Studio를 엽니 다. 이것이 내가이 일을하기 위해해야했던 일입니다.


답변

영역을 사용하고 있으며이 문제와 관련하여 방금 네임 스페이스를 루트 web.config에서 영역 웹으로 복사했습니다. 구성 및 이제 작동합니다!

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


답변

나는 같은 문제가 있었고 WinMerge를 사용하여 이것을 추적하는 데 도움을주었습니다. 그러나 더 자세히 조사한 결과 Rick이 블로그에 대한 완벽한 블로그 게시물 을 가지고 있음을 발견 했습니다.

요약:

  • 더하다 <add namespace="System.Web.Optimization"/>두 web.config 파일 모두에
  • 운영 Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • 번들링 코드 업데이트
  • 레이아웃 파일 업데이트
  • 마지막 단계는 10 개의 다른 라이브러리를 업데이트하는 것입니다. 나는하지 않고 잘 작동했습니다. 따라서이 중 하나를 이미 업데이트하지 않은 한이를 미루는 것처럼 보입니다. 🙂

답변

나는 같은 문제가 있었다.

내가 사용하고 있던 System.Web.Optimization 버전은 MVC4 RC 용으로 구 버전입니다.

VS 2010에서 패키지 관리자를 사용하여 패키지를 업데이트했습니다.

MSDN 블로그에서 에서 Andy 씨는 MVC 4 베타 프로젝트를 MVC 4 RC로 업데이트하는 방법에 대해 설명합니다. 내 패키지를 업데이트하면 스크립트 (특히 웹 최적화 패키지)가 해결됩니다.

최신 System.Web.Optimization 패키지를 설치하려면 패키지 관리자 콘솔 (도구-> 라이브러리 패키지 관리자-> 패키지 관리자 콘솔)을 사용하고 아래 명령을 실행하십시오.

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization

패키지에 포함 된 System.Web.Optimization 파일을 참조하십시오.

다른 패키지를 업데이트하려면 : 도구 메뉴-> 라이브러리 패키지 관리자-> 솔루션 용 NuGet 패키지 관리.


답변

새로운 MVC 4 RC 인터넷 응용 프로그램을 만들고 실행하십시오. 동일한 코드를 사용하는 로그인으로 이동

 @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Login.cshtml이 작동하도록하는 것은 Views \ Web.config 파일 (앱 루트 버전이 아님)에 포함되어 있습니다.

<namespaces>

    <add namespace="System.Web.Optimization"/>

  </namespaces>

작성보기가 작동하지 않고 로그인이 왜 필요한가요?