다음 섹션이 정의 레이아웃 페이지 "~ / Views / Shared / _Layout.cshtml"에 대해 논의되지 않습니다. "서비스"
저는 ASP MVC를 처음 사용하고 Intro to ASP MVC 4 Beta 안내 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet을 사용합니다. . -mvc-4
대답을 해결하기 해결하기 프로그래밍 경험이 많지 않은 오류가 발생하여 튜토리얼을 진행하면서 문제를 시작해야 할 곳조차 없습니다. 도움을 주시면 감사하겠습니다.
컨트롤러에서 모델 데이터 액세스 섹션에 생성 튜토리얼의 일부로 영화를려고 할 때이 오류가 발생합니다. "새로 만들기"링크를 클릭하면 다음 오류가 발생합니다.
다음 섹션이 정의 레이아웃 페이지> "~ / Views / Shared / _Layout.cshtml"에 대해 설명되지 않습니다. "스크립트"
Visual Studio Express를 사용하는 대신 Visual Studio 2012 RC를 다운로드했습니다. (내 문제의 근본 원인인지 확실하지 않습니다.
이 질문에 답해야 할 코드를 포함해야 할 것인지 모르겠습니다. 어떤 코드를 포함 해야하는지 알려 주시면 제 질문에 추가해 드리겠습니다.
감사합니다,
이것은 마스터 Layout.cshtml에서 섹션을 정의했지만 뷰에 해당 섹션에 대한 항목을 포함하지 않습니다.
_Layout.cshtml에 다음과 같은 내용이있는 경우 :
@RenderSection("scripts")
다음 해당 레이아웃 그런을 사용하는 모든 뷰 에는 동일한 이름의 가 포함 되어야합니다@section
(섹션의 내용이 비어있는 경우에도).
@{
ViewBag.Title = "Title";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
// Add something here
}
또는 필수를 false로 설정하면 모든 뷰에 섹션을 추가 할 필요가 없습니다.
@RenderSection("scripts", required: false)
나 또한 당신은 포장 할 수 @RenderSection
에 if
, 블록
@if (IsSectionDefined("scripts"))
{
RenderSection("scripts");
}
또한 _Layout.cshtml
또는 다음 줄을 추가 할 수 있습니다 _Layout.Mobile.cshtml
.
@RenderSection("scripts", required: false)
나는 3 단계 일품 _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . 이렇게해도 :
_MainLayout.cshtml
<head>
@RenderSection("head", false)
</head>
_Middle.cshtml
@section head {
@RenderSection("head")
}
및 Page.cshtml에서 정의
@section head {
***content***
}
여전히 오류가 발생합니다.
다음 섹션이 정의 레이아웃 페이지 "~ / Views / Shared / _Middle.cshtml": "head"에 대해 설명되지 않습니다.
에 대해 밝혀졌다 오류는 Middle.cshtml가 에 의존 /Views/_ViewStart.cshtml 그것의 부모 레이아웃을 해결하기 위해. 이 문제는 Middle.cshtml에서 명시 적으로 정의하여 해결되었습니다 .
@{
Layout = "~/Views/_Shared/_MainLayout.cshtml";
}
이것이 MVC 4의 설계에 의한 것인지 버그인지 결정할 수 없습니다-어쨌든 문제가 해결되었습니다 :)
제안 된 솔루션이 문제를 해결하지 않았거나 해결되지 않는 경우 수락 된 답변이 왜 수락되었는지 잘 모르겠습니다. 실제로이 주제와 관련된 두 가지 관련 문제가있을 수 있습니다.
문제 # 1
마스터 페이지 (예 :) _Layout.cshtml
에는 섹션이 정의되어 있으며 필수 이지만 상속하는 뷰가이를 구현하지 않았습니다. 예를 들면
레이아웃 템플릿
<body>
@* Visible only to admin users *@
<div id="option_box">
@* this section is required due to the absence of the second parameter *@
@RenderSection("OptionBox")
</div>
</body>
상속 뷰
코드를 표시 할 필요가 없으며@section OptionBox {}
보기에의 구현 이 없다는 점만 고려 하십시오.
문제 # 1의 오류
Section not defined: "OptionBox ".
문제 # 2
마스터 페이지 (예 :) _Layout.cshtml
에는 섹션이 정의되어 있으며 필수 이며 상속 된 뷰 가이를 구현했습니다. 그러나 구현보기에는 마스터 페이지 (들)에 정의되지 않은 추가 script
섹션이 있습니다 .
레이아웃 템플릿
same as above
상속 뷰
<div>
<p>Looks like the Lakers can still make it to the playoffs</p>
</div>
@section OptionBox {
<a href"">Go and reserve playoff tickets now</a>
}
@section StatsBox {
<ul>
<li>1. San Antonio</li>
<li>8. L. A. Lakers</li>
</ul>
}
문제 # 2의 오류
The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"
OP의 문제는 Issue # 2와 유사하며 수락 된 답변은 Issue # 1에 대한 것입니다.
우리의 솔루션이 다른 사람들과 충분히 달랐기 때문에 여기에 문서화하겠습니다.
메인 레이아웃, 중간 레이아웃 및 최종 작업 페이지 렌더링을 설정했습니다. Main.cshtml <-Config.cshtml <-Action.cshtml
web.config가 customErrors='On/RemoteOnly'
사용자 지정 오류를 받았을 때만 예외가없고 Application_Error
호출 되지 않았습니다. Layout = null
Error.cshtml 에서 온라인으로 이것을 잡을 수 있습니다. 예외는 질문, 누락 된 스크립트 섹션과 같습니다.
Main.cshtml (필수 : false 포함)에 정의되어 있고 Action.cshtml에는 스크립트 섹션에 기록 된 내용이 없습니다.
해결책은 @section scripts { @RenderSection("scripts", false) }
Config.cshtml 에 추가하는 것이 었습니다.
기본적으로 _Layout.cshtml에 다음 이 없을 때 발생합니다 .
@RenderSection("scripts", required: false)
또는
@RenderSection("scripts")
없이
required: false
따라서 _Layout.cshtml 에 @RenderSection ( "scripts", required : false)를 추가 하면 Kendoui 생성 프로젝트 를 사용하는 개발자를 위해 특별히 작동 합니다.
새 모델을 만드는 데 사용할 때 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 정도에 대해 간략하게 언급됩니다.
Visual Studio 2012에서 ASP.NET MVC 4 자습서를 진행하는 동안 "컨트롤러에서 모델 데이터 액세스"섹션에서 동일한 오류가 발생했습니다. 수정은 아주 간단합니다.
Visual Studio 2012에서 공유 폴더의 _Layout.cshtml 문서 내에서 새 ASP.NET MVC 4 웹 응용 프로그램을 만들 때 "scripts"섹션이 주석 처리됩니다.
@*@RenderSection("scripts", required: false)*@
줄의 주석 처리를 제거하면 샘플 코드가 작동합니다.
@RenderSection("scripts", required: false)
MVC 초보자를위한 자습서를 구현하는 동안 동일한 문제가 있습니다. layout.cshtml 파일에서 @RenderSection을 수정하라는 다양한 제안을 받았지만 사용하지 않았습니다.
검색을 많이했는데 (View / Edit.cshtml) 및 기타 cshtml 파일에서 생성 된 스크립트 태그가 렌더링되지 않음을 발견했습니다.
**@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
} **
그래서 그 줄을 제거하고 응용 프로그램이 원활하게 실행되기 시작합니다.
웹에서 오류를 검색하여이 페이지를 찾았습니다. 저는 Visual Studio 2015를 사용하고 있으며 이것은 첫 번째 MVC 프로젝트입니다.
렌더링 섹션 앞에 @ 기호를 놓친 경우 동일한 오류가 발생합니다. 미래의 초보자를 위해 이것을 공유하고 싶습니다.
@RenderSection("headscripts", required: false)
@ 섹션이있는 부분보기를 참조하는 _Layout 파일의 @ 섹션 내에서 섹션을 렌더링하고있는 것 같습니다. 즉, @ 섹션 내에 @ 섹션을 중첩했습니다. _Layout 파일에서 rendersection 주위의 @section을 제거하십시오.
보기에서 스크립트 섹션 사용의 올바른 철자를 입력했는지 확인하십시오.
정답은
@section scripts{ //your script here}
입력했다면 @section script{ //your script here}
이것은 잘못된 것입니다.
다음을 사용하여이 문제를 해결했습니다.
@await Html.PartialAsync("_ValidationScriptsPartial")
용어 ""의 철자 및 대 / 소문자를 확인하십시오.
@RenderSection ( "name", required : false)을 쓸 때마다 면도기 뷰에 섹션 @section name {}이 포함되어 있는지 확인하여 ""용어의 철자 및 대문자 / 소문자를 확인하십시오.이 경우 올바른 것은 "스크립트"입니다.
'IT' 카테고리의 다른 글
기능의 설명 (0) | 2020.09.11 |
---|---|
왜 빌드 후 단계 (xcopy)가 TeamCity 빌드에서 코드 2와 함께 종료합니까? (0) | 2020.09.11 |
bash에서 json 파일을 구문 분석하기 위해 jq 출력에서 큰 따옴표를 제거하는 방법은 무엇입니까? (0) | 2020.09.11 |
div 배경색, onhover 변경 (0) | 2020.09.11 |
폴더에서 특정을 가진 파일 찾기 (0) | 2020.09.11 |