새 모델을 만드는 데 사용할 때 Visual Studio의 일부 버전이 자동으로 생성하는 View 파일간에 불일치가있는 것으로 보입니다. 새로운 VS 2013 Community Edition을 사용 하고 http://www.w3schools.com/aspnet/mvc_app.asp 에서 W3Schools 자습서를 통해이 문제가 발생 했지만 위의 의견은 자습서 지침 또는 단일 버전의 VS.
그냥 제거하면 오류 메시지 가 사라지는 것은 사실입니다 .
@Scripts.Render("~/bundles/jqueryval")
Visual Studio에서 자동 생성 된 레이아웃 생성 / 편집의 줄입니다.
그러나이 솔루션은 근본 원인을 해결하지 못하거나 튜토리얼을 마치는 것 이상을 할 수있는 좋은 장소에 남겨 두지 않습니다. 실제 애플리케이션 개발의 어느 시점 (아마 상당히 초기)에 주석 처리 솔루션이 앱에서 제거하는 jquery 유효성 검사 코드에 액세스하려고 할 것입니다.
VS를 사용하여 새 모델을 만드는 경우 만들기, 삭제, 세부 정보, 편집 및 색인의 5 가지보기 파일 세트도 생성됩니다. 이러한보기 중 두 가지 인 만들기 및 편집은 사용자가 모델의 기반이되는 데이터베이스 레코드의 필드에 대한 데이터를 추가 / 편집 할 수 있도록하기위한 것입니다. 실제 앱의 이러한 뷰의 경우 레코드를 db에 저장하기 전에 jquery 유효성 검사 라이브러리를 사용하여 일정량의 데이터 유효성 검사를 수행 할 수 있습니다. 이것이 VS가 다음 줄을 추가하는 이유입니다.
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
이 두 가지보기의 맨 아래에 있습니다. 자동 생성 된 코드는 해당 뷰에서 유효성 검사 라이브러리를 사용할 수 있도록 시도하지만 다른 뷰에서는 사용할 수 없습니다.
VS가 공유 _Layout.cshtml 파일에 해당 줄을 추가하지 않거나 위의 답변 중 하나를 참조하여 추가하지만 주석 처리 된 상태로두기 때문에 오류가 발생합니다. 이 라인은
@RenderSection("scripts", required: false)
일부 뷰에 스크립트 섹션이있는 경우 (Create 및 Edit처럼) 레이아웃에 RenderSection 명령이 포함되어 있어야합니다. 일부 스크립트에 섹션이 있고 일부가없는 경우 (삭제, 세부 정보 및 색인에는 없음) RenderSection 명령에 required: false
매개 변수 가 있어야합니다 .
따라서 자습서를 마치는 것 이상을 수행하려는 경우 가장 좋은 해결책은 편집 및 만들기 뷰에서 코드를 제거하지 않고 _Layout.cshtml에 문을 추가하는 것입니다.
추신 여기에 필요한 것은 '번들'에 있고 require 문은 프로젝트에 존재하지 않는 번들 폴더에 파일을 포함하려는 것처럼 보입니다. 그러나 디버그 빌드 및 자습서의 경우 번들 파일이 한 번에 하나씩 포함되므로 관련이 없습니다. 참조 : http://www.asp.net/mvc/overview/performance/bundling-and-minification 여기서 문제가되는 코드는 페이지 아래쪽의 3 분의 2 정도에 대해 간략하게 언급됩니다.