asp.net-mvc - net - razor 란




MVC 4 @Scripts "존재하지 않습니다" (16)

  1. :보기 페이지를 제거하십시오.
  2. : 네임 스페이스 webconfig 추가 (보기 디렉토리에서)
  3. : 시도보기 만들기!

행운을 빕니다...

방금 ASP.NET MVC 4 프로젝트를 만들었고 Visual Studio 2012 RC를 사용하여 IndexCreate Action에 대한 컨트롤러 및 Razor 뷰를 만들었습니다.

응용 프로그램을 실행하고 Create 보기를 열면 다음 오류가 표시됩니다.

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

문제는보기 하단에 자동으로 추가 된 다음 코드입니다.

@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 헬퍼를 사용하는 사람들이 블로깅하고 있습니다.

아직 Visual Studio 2012 RC를 새로운 Windows 8 설치에 설치 한 경우 Visual Studio에서 생성 된 View에 추가하더라도 여전히 @Scripts 를 사용할 수 없습니다!

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

결국 업데이트를 통해 문제가 해결 된 것 같아서 어떻게 닫을 지 모르겠습니다. 나는 새 프로젝트를 사용하여 새로 설치를 수행했는지 다시 한 번 확인했습니다. 그러나 내가 만든 동일한 실패한 프로젝트는 다양한 업데이트와 수동적 인 개입없이 잘 작동합니다. 모든 생각을 주셔서 감사하지만 그 당시에는 분명히 문제가있었습니다.)


MVC3에서 MVC4로 프로젝트를 업그레이드 할 때 매우 유사한 오류가 발생했습니다.

컴파일러 오류 메시지 : CS0103 : 이름 [blah]이 (가) 현재 컨텍스트에 없습니다.

제 경우에는 필자의 Web.Configs에서 버전 번호가 구식이었습니다.

  1. 내 프로젝트의 모든 Web.Config에서 "3.0.0.0"에서 "4.0.0.0"으로 System.Web.Mvc 버전 번호를 업데이트해야했습니다.
  2. 내 프로젝트의 모든 Web.Config에서 "System.Web.WebPages, System.Web.Helpers 및 System.Web.Razor 버전 번호를 모두"1.0.0.0 "에서"2.0.0.0 "으로 업데이트해야했습니다.

전의:

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

...

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

각 Views 디렉토리의 Web.Configs를 검토하십시오.

ASP.NET MVC 3 프로젝트를 ASP.NET MVC 4로 업그레이드하는 방법 에 대한 자세한 내용을 볼 수 있습니다.


_Layout.cshtml에이 코드 부분을 추가하여 MvcMusicStore에서이 문제를 해결합니다.

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

Edit.cshtml에서이 코드를 제거하십시오.

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

inshallah가 당신과 함께 할 프로그램을 실행하십시오.


web.config에 추가했지만 여전히 메시지가 표시되면 프로젝트를 닫았다가 다시 열어야합니다. 이제는 @ Styles.Render ( "") 및 @ Scripts.Render ()가 제대로 작동합니다.


그냥 써

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}

그러나 명령을 실행하는 동안이 문제가 발생했습니다.

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

나는 비밀스런 메시지를 받았다. (커피 한 잔 전에 큰 말씨를 사랑해야한다.)

Install-Package :이 플랫폼에서는 지정된 암호화 알고리즘이 지원되지 않습니다.

Windows XP SP3 (선택 사항 아님) 에서이 작업 을 실행하고 있는데 ASP.NET 개발자 포럼 에서 사용자 artnob이 게시 한 지침을 따라야한다는 것을 발견했습니다.

  • 너겟을 제거하고 다시 설치하십시오. 이 작업을 수행 할 수 없으면 관리자로 로그인하십시오.
  • Tools => Extension Manager => "Nuget Package Manager"선택 => UnInstall
  • "Nuget"=> Install을 검색하여 다시 설치하십시오.
  • 작동하지 않으면 이전 게시물에서 언급 한 1.7.x 버전을 설치하십시오. (이전 버전을 사용해야하며, 제대로 작동하면이 버그를보고하고 최신 버전 용 패치).

일단 이것을 실행하면 명령 행을 실행하여 Web.Optimization을 업데이트 할 수 있습니다.

누군가가 파기를하기를 바랍니다.


나는 동일한 문제가 있었고 WinMerge를 사용하여이 문제를 추적 할 수있었습니다. 그러나 내가 더 연구를하면서, 나는 Rick이 그것을위한 완벽한 블로그 포스트 를 가지고 있음을 발견했다.

개요:

  • 두 web.config 파일에 <add namespace="System.Web.Optimization"/>
  • Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization 실행 Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • 번들 코드 업데이트
  • 레이아웃 파일 업데이트
  • 마지막 단계는 10 개의 다른 라이브러리를 업데이트하는 것입니다. 나는하지 않았고 잘 작동했다. 그래서 당신이이 하나를 연기 할 수있는 것처럼 보입니다 (이미 하나 또는 그 이상을 업데이트하지 않았다면). :)

나는 영역을 사용하고 있으며이 문제를 해결하기 위해 막 루트 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" />

내가 가지고있는 프로젝트에 Area를 추가 한 후에이 문제가 발생했습니다. 이를 제거하기 위해 루트 뷰 폴더를 사용하여 web.config를 영역의 뷰 폴더에 복사하고 작업을 시작했습니다.


다음과 같이 면도기 뷰 위에 System.Web.Optimization을 가져옵니다.

@using System.Web.Optimization

베타 버전에서 RC 버전으로 업그레이드하고 '스크립트'가 존재하지 않습니다. 웹 전체에서 서핑을하고 마지막 솔루션은 N40JPJ가 말한 것과 또 다른 workaroudn입니다.

View \ Web.config에서 다음을 복사하십시오.

  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.Optimization"/>
    <add namespace="System.Web.Helpers"/>
  </namespaces>

그리고 View \ Shared_Layout.cshtml 내부에

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

희망이 도움이됩니다.


분명히 'Scripts'폴더가없는 'Empty'프로젝트 유형을 만들었습니다. 내 충고 - 전체 'Scripts'폴더가있는 '기본'프로젝트 유형을 만듭니다.

모든 개발자에게.


여기에 핵심은

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

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

최신 정보:

MVC 4 System.Web.Optimization의 출시가 이제는 쓸모가 없어졌습니다. 빈 솔루션으로 시작하는 경우 다음과 같은 넛츠 패키지를 설치해야합니다.

Install-Package Microsoft.AspNet.Web.Optimization

web.config 파일에서 System.Web.Optimization을 참조해야합니다. 자세한 내용은이 항목을 참조하십시오.

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

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


위의 내용에서 누락 된 작은 단계가 있었는데 다른 게시물에서 발견되었습니다. 추가 후

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

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


이 코드가있는 페이지에 들어갈 때 :

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

이 오류는 발생합니다. 오류. 요청을 처리하는 중 오류가 발생했습니다.

그리고이 예외는 내 로그에 기록됩니다.

System.Web.HttpException (0x80004005): The controller for path '/bundles/jqueryval' was not found or does not implement IController.
   em System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
...

나는이 페이지에서 모든 팁을 시도했지만 그 중 아무도 나를 위해 해결되지 않았습니다. 그래서 나는 나의 패키지 폴더를 보았고 System.Web.Optmization.dll을위한 두 개의 버전을 가지고 있다는 것을 알아 차렸다.

  • Microsoft.AspNet.Web.Optimization.1.1.0 (v1.1.30515.0 - 68,7KB)
  • Microsoft.Web.Optimization.1.0.0-beta (v1.0.0.0 - 304KB)

내 프로젝트는 이전 베타 버전을 참조했습니다. 필자는 최신 버전 (69KB)에 대한 참조 만 변경했으며 eveything은 정상적으로 작동했습니다.

나는 그것이 누군가를 도울 것 같아요.


컨트롤러의 코드 생성 / 편집 (Edit & Risor)보기에서 코드를 제거하거나 숨 깁니다.

 @section Scripts {  

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




razor