mvc - asp.net tutorial




Die folgenden Abschnitte wurden definiert, aber nicht für die Layout-Seite "~/Views/Shared/_Layout.cshtml" gerendert: "Scripts" (9)

Ich bin neu in ASP MVC und mit dem Intro zu ASP MVC 4 Beta-Lernprogramm http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

Ich stoße auf einen Fehler, auf den ich keine Antwort finden kann, und ich habe auch nicht viel Programmiererfahrung, also weiß ich nicht, wo ich anfangen soll, das Problem zu beheben. Ich schätze jede Hilfe, die Sie zur Verfügung stellen können.

Ich bin im Zugriff auf die Daten Ihres Modells aus einem Controller-Bereich und erhalte diesen Fehler, wenn ich versuche, einen Film als Teil des Tutorials zu erstellen. Ich klicke auf den Link "Create New" und erhalte den folgenden Fehler

Die folgenden Abschnitte wurden definiert, wurden aber nicht für die Layoutseite gerendert> "/ Views / Shared / _Layout.cshtml": "Scripts"

Anstatt Visual Studio Express zu verwenden, entschied ich mich, Visual Studio 2012 RC herunterzuladen (nicht sicher, ob das die Ursache meines Problems sein würde).

Mir ist klar, dass Sie möglicherweise verlangen, dass ich Code einschließe, um dies zu beantworten, aber ich bin mir nicht sicher, welchen Code ich überhaupt hinzufügen soll. Bitte geben Sie an, welchen Code ich beifügen muss und ich werde ihn gerne zu meiner Frage hinzufügen.

Vielen Dank,


überprüfen Sie die Speling und Groß / Kleinschreibung des Begriffs ""

Wenn wir @RenderSection ("name", erforderlich: false) schreiben, vergewissern Sie sich, dass die Rasiereransicht einen Abschnitt @Sektionname {} enthält. Überprüfen Sie also die Groß- / Kleinschreibung des Terms "" In diesem Fall ist "Scripts" korrekt.


Außerdem können Sie die Zeile _Layout.cshtml oder _Layout.Mobile.cshtml :

@RenderSection("scripts", required: false)

Bitte vergewissern Sie sich, dass Sie die Schreibweise korrekt eingegeben haben

das Richtige ist

@section scripts{ //your script here}

Wenn Sie @section script{ //your script here} ist das falsch.


Das bedeutet, dass Sie in Ihrem Master-Layout.cshtml einen Abschnitt definiert haben, aber für diesen Abschnitt in Ihrer Ansicht nichts enthalten haben.

Wenn Ihr _Layout.cshtml etwas wie folgt hat:

@RenderSection("scripts")

Dann müssen alle Ansichten, die dieses Layout verwenden, eine @section mit dem gleichen Namen enthalten (auch wenn der Inhalt der Sektion leer ist):

@{
    ViewBag.Title = "Title";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
    // Add something here
}

Als Alternative können Sie "false" als erforderlich festlegen. Dann müssen Sie den Abschnitt nicht in jeder Ansicht hinzufügen.

@RenderSection("scripts", required: false)

oder Sie können die @RenderSection in einen if Block @RenderSection ,

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

Es tritt grundsätzlich auf, wenn _Layout.cshtml ohne ist:

@RenderSection("scripts", required: false)

oder mit

@RenderSection("scripts")  

OHNE

required: false

Also, fügen Sie einfach @RenderSection ("scripts", erforderlich: false) in _Layout.cshtml hinzu und es funktioniert speziell für jene Entwickler, die mit Kendoui- generierten Projekten arbeiten.


Ich bin mir nicht sicher, warum die angenommene Antwort akzeptiert wurde, wenn die vorgeschlagene Lösung das Problem nicht gelöst hat und nicht löst. Es kann tatsächlich zwei verwandte Probleme im Zusammenhang mit diesem Thema geben.

Fehler 1

Auf der Masterseite (z. B. _Layout.cshtml ) ist ein Abschnitt definiert, der erforderlich ist , aber die erbenden Ansichten haben ihn nicht implementiert. Beispielsweise,

Die Layoutvorlage

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

Die vererbende Ansicht

Sie müssen keinen Code @section OptionBox {} , dass es keine Implementierung von @section OptionBox {} in der Ansicht gibt.

Der Fehler für Problem 1

Section not defined: "OptionBox ".

Problem # 2

Auf der Masterseite (z. B. _Layout.cshtml ) ist ein Abschnitt definiert, und es ist erforderlich, UND die erbende Sicht hat es implementiert. Die Implementierungsansicht verfügt jedoch über zusätzliche script , die auf keiner der Masterseiten definiert sind .

Die Layoutvorlage

same as above

Die vererbende Ansicht

<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>
}

Der Fehler für Problem 2

The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"

Das Problem des OPs ähnelt dem Problem Nr. 2 und die angenommene Antwort bezieht sich auf Problem Nr. 1.


Ich habe das Gefühl, dass Sie Ihre Sektion innerhalb einer @Sektion in der _Layout-Datei rendern, die sich auf eine partielle Ansicht mit einer @Sektion bezieht, dh Sie haben eine @Sektion innerhalb einer @Sektion verschachtelt. Entfernen Sie in der _Layout-Datei den @ -Sektion um den Renderbereich.


Ich habe dasselbe Problem bei der Implementierung eines Tutorials für Anfänger von MVC. Ich habe verschiedene Vorschläge, die @RenderSection in Ihrer layout.cshtml Datei zu ändern, aber ich habe sie nicht benutzt.

Ich habe viel gesucht und dann festgestellt, dass das in einer (View / Edit.cshtml) und anderen cshtml-Datei generierte Skript-Tag nicht gerendert wird

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

} **

Also habe ich diese Zeilen entfernt und die Anwendung läuft reibungslos.


Ich suchte nach dem Fehler im Web und kam auf diese Seite. Ich benutze Visual Studio 2015 und dies ist mein erstes MVC-Projekt.

Wenn Sie das @ -Symbol vor dem Render-Bereich vermissen, erhalten Sie den gleichen Fehler. Ich möchte dies für zukünftige Anfänger teilen.

 @RenderSection("headscripts", required: false)




asp.net-mvc