programing

레이아웃 페이지 "~/Views/Shared/_Layout.cshtml"에 대해 다음 섹션이 정의되었지만 렌더링되지 않았습니다. "스크립트"

cafebook 2023. 4. 28. 21:32
반응형

레이아웃 페이지 "~/Views/Shared/_Layout.cshtml"에 대해 다음 섹션이 정의되었지만 렌더링되지 않았습니다. "스크립트"

저는 ASP MVC가 처음이고 ASP MVC 4 베타 튜토리얼 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
}

또는 required를 false로 설정하면 모든 보기에서 섹션을 추가할 필요가 없습니다.

@RenderSection("scripts", required: false)

또는 포장할 수도 있습니다.@RenderSection순식간에if 블록, 블록,

@if (IsSectionDefined("scripts"))
{
    RenderSection("scripts");
}

저는 3단계 a'la_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"에 대해 다음 섹션이 정의되었지만 렌더링되지 않았습니다."머리"

Middle.cshtml이 부모 레이아웃을 확인하기 위해 /Views/_ViewStart.cshtml을 사용한 것으로 확인되었습니다.이 문제는 Middle.cshtml에서 명시적으로 정의함으로써 해결되었습니다.

@{
Layout = "~/Views/_Shared/_MainLayout.cshtml";
}

이것이 바이 디자인인지 MVC 4의 버그인지 결정할 수 없습니다 - 어쨌든 문제는 해결되었습니다 :)

을 또다음행추수있다습니가할에 할 수 ._Layout.cshtml또는_Layout.Mobile.cshtml:

@RenderSection("scripts", required: false)

제안된 해결책이 문제를 해결하지도 않고 해결하지도 않는데 왜 수락된 답변이 받아들여졌는지 잘 모르겠습니다.실제로 이 주제와 관련된 두 가지 관련 문제가 있을 수 있습니다.

이슈 #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의 이슈는 이슈 #2와 비슷하며 수락된 답변은 이슈 #1에 대한 것입니다.

우리의 솔루션은 다른 모든 사람들과 충분히 달랐다고 생각하기 때문에 여기서 문서화하겠습니다.

기본 레이아웃, 중간 레이아웃 및 최종 수행 페이지 렌더링을 설정했습니다.Main.cshtml <- Config.cshtml <- Action.cshtml

에 web.config가 있을 customErrors='On/RemoteOnly'사용자 지정 오류가 발생했습니다. 예외나 예외가 없습니다.Application_Error호출되었습니다.나는 이것을 이해할 수 있습니다.Layout = nullError.cshtml 파일입니다.문제의 스크립트 누락 섹션에서 예외가 발생했습니다.

Main.cshtml(필수: false 포함)에 정의되어 있으며 Action.cshtml에는 스크립트 섹션에 기록된 내용이 없습니다.

솔루션은 추가하는 것이었습니다.@section scripts { @RenderSection("scripts", false) }Config.cshtml 파일입니다.

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개 보기 파일 집합도 생성됩니다.이러한 보기 중 Create 및 Edit은 사용자가 모델의 기초가 되는 데이터베이스 레코드의 필드에 대한 데이터를 추가/편집할 수 있도록 합니다.실제 앱에서 이러한 보기의 경우 레코드를 DB에 저장하기 전에 jquery 유효성 검사 라이브러리를 사용하여 어느 정도의 데이터 유효성 검사를 수행해야 합니다.VS가 다음 행을 추가하는 이유입니다.

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

다른 사람들이 아닌 그 두 관점의 밑바닥까지.자동 생성된 코드는 해당 보기에 대해 유효성 검사 라이브러리를 사용할 수 있도록 시도하고 있지만 다른 보기에는 사용할 수 없습니다.

이 오류는 VS가 공유 _Layout.cshtml 파일에 해당 줄을 추가하지 않거나 위의 답변을 참조하여 추가하지만 주석이 없는 상태로 방치하기 때문에 발생합니다.이 줄은

@RenderSection("scripts", required: false)

일부 보기에 스크립트 섹션(작성 및 편집과 같이)이 있는 경우 레이아웃에 RenderSection 명령이 포함되어 있어야 합니다. 스크립트에 섹션이 및 ) 에는 " " " " (RenderSection, " " " (RenderSection ")이 .required: false매개 변수

따라서 튜토리얼을 완료하는 것 이상의 작업을 수행하려면 _Layout.cshtml에 문을 추가하여 편집 및 만들기 보기에서 코드를 제거하지 않는 것이 가장 좋습니다.

추신. 여기서 필요한 것이 '번들'에 있고, 요청문이 프로젝트에 존재하지 않는 번들 폴더에 파일을 포함하려고 하는 것처럼 보인다는 것은 약간 혼란스럽습니다.그러나 디버그 빌드 및 자습서의 경우 번들 파일이 한 번에 하나씩 포함되기 때문에 관련이 없습니다.참조: http://www.asp.net/mvc/overview/performance/bundling-and-minification 여기서 문제가 되고 있는 코드는 페이지의 3분의 2 정도에 대해 간략하게 언급되어 있습니다.

기본적으로 _Layout.cshtml에 다음이 없을 때 발생합니다.

@RenderSection("scripts", required: false)

또는 와 함께

@RenderSection("scripts")  

없이.

required: false

따라서 _Layout.cshtml에 @RenderSection("scripts", 필수: false)을 추가하기만 하면 Kendoui generated 프로젝트를 수행하는 개발자에게 특히 유용합니다.

ASP를 통해 작업하는 동안.Visual Studio 2012를 사용한 NET MVC 4 튜토리얼 "컨트롤러에서 모델의 데이터 액세스" 섹션에서 동일한 오류가 발생했습니다.해결책은 아주 간단합니다.

새 ASP를 생성할 때.공유 폴더의 _Layout.cshtml 문서에 있는 Visual Studio 2012의 NET MVC 4 웹 응용 프로그램 "scripts" 섹션이 설명되어 있습니다.

    @*@RenderSection("scripts", required: false)*@

라인의 주석을 제거하면 샘플 코드가 작동합니다.

    @RenderSection("scripts", required: false)

방금 오류가 발생했는데 뒤에 있는 이유가 스크립트 섹션을 렌더링해야 하기 때문이라고 읽었습니다.그러나 _Layout에서는 이미 그대로였습니다.

@RenderSection("Scripts", required: false)

또한 페이지 하단에 섹션을 추가하기 전에 작동했습니다.

에는 간단한 이었습니다.Scripts.

@section Scripts{
<script src="~/js/myScript.js"></script>
}

저는 MVC 초급자를 위한 튜토리얼을 시행하면서도 같은 문제가 생겼습니다.당신의 layout.cshtml 파일에 있는 @RenderSection을 수정하자는 다양한 제안을 받았지만 사용하지 않았습니다.

검색을 많이 했더니 (View/Edit.cshtml) 및 다른 cshtml 파일에서 생성된 스크립트 태그가 렌더링되지 않습니다.

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

}**

그래서 저는 그 줄들을 제거했고 애플리케이션이 원활하게 실행되기 시작합니다.

아래와 같이 "_Layout.cshtml"을 변경하여 작동합니다.NetCore 3.1 Blazor Server 모듈 ID 문제.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>@ViewBag.Title</title>
    <link href="~/css/bootstrap/bootstrap.min.css" rel="stylesheet" />
    <link href="~/css/app.css" rel="stylesheet" />
    @RenderSection("Scripts", required: false)


</head>

<body>
    <div class="main">
        <div class="content px-4">


            @RenderBody()
        </div>
    </div>
</body>

</html>


@section Scripts {    
    
}

_Layout 파일에서 @섹션이 있는 부분 뷰를 참조하는 @섹션 내에서 섹션을 렌더링하는 느낌입니다. 즉, @섹션 내에 @섹션을 내포했습니다._Layout 파일에서 렌더 섹션 주위의 @ 섹션을 제거합니다.

저는 또한 **@섹션 스크립트가 원활하게 실행되는 것에 대해 언급했습니다.:)

저에게 있어서는 스크립트 대신 스크립트라고 말한 것입니다. 디버깅하는 동안 오류로 표시되지 않는 이유를 모르겠습니다.

@section Script {}

저는 웹에서 오류를 검색하여 이 페이지에 왔습니다.저는 Visual Studio 2015를 사용하고 있으며 이것은 저의 첫 번째 MVC 프로젝트입니다.

렌더 섹션 앞에 @ 기호를 놓치면 동일한 오류가 발생합니다.저는 이것을 미래의 초보자들을 위해 공유하고 싶습니다.

 @RenderSection("headscripts", required: false)

용어 ""의 철자 및 대문자/하소문자 확인

@RenderSection("이름", 필수: false)을 작성할 때마다 레이저 뷰에 섹션 @섹션 이름 {}이(가) 포함되어 있는지 확인하십시오. 따라서 ""의 철자와 "이 경우 수정"은 "스크립트"입니다.

보기에서 스크립트 사용 섹션의 맞춤법을 올바르게 입력했는지 확인하십시오.

정확한 것은

@section scripts{ //your script here}

입력한 경우@section script{ //your script here}이는 잘못되었다.

저는 다음과 같은 방법으로 이 문제를 해결했습니다.

@await Html.PartialAsync("_ValidationScriptsPartial")

나에게 문제는 _Layout.cshtml 조건 안에 렌더 섹션이 있습니다.

 @if (theme == "Red" || theme == "Green")
  {
       <div>
       @RenderSection("Footer", false)
       </div>
   }

그리고 내 아이의 관점에서 그것은 조건이 없었습니다.

@section Footer{
        <div>
            @Html.AwButton("Reject", "Reject")
            @Html.AwSubmit("Ok", "Ok")
        </div>
    }

테마에 관계없이 하위 항목이 바닥글을 추가했습니다.그러나 부모에서 테마가 빨간색 또는 녹색이 아닌 경우에는 바닥글을 추가하지 않고 손으로 잡지 않은 예외가 던져졌습니다.

언급URL : https://stackoverflow.com/questions/10971149/the-following-sections-have-been-defined-but-have-not-been-rendered-for-the-layo

반응형