webentwicklung-frage-antwort-db.com.de

Was bedeutet dieser Rendering-Code?

Ich bin ein Anfänger in Asp.Net MVC3. Kann jemand bitte erklären, was mit diesem Code gemeint ist:

@section head
{
    @RenderSection("head", false)
}

Zu ScottGus Artikel:

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

es gibt ein Beispiel für RenderSection, aber es definiert @section und irgendwo wird @RenderSection verwendet. In diesem Fall wird der Abschnittskopf definiert, und in diesem Bereich wird derselbe Kopf erzeugt, der mich verwirrt.

Was macht RenderSection und wie finde ich heraus, was hier gerendert wird?

33
Tim Tom

Scott schrieb an einer Stelle

Der erste Parameter der Hilfsmethode "RenderSection ()" gibt an der Name des Abschnitts, den wir an dieser Stelle in .__ rendern möchten. Layoutvorlage. Der zweite Parameter ist optional und erlaubt es, Definieren Sie, ob der Abschnitt, den wir rendern, erforderlich ist oder nicht. Wenn eine Abschnitt ist "erforderlich", dann gibt Razor zur Laufzeit einen Fehler aus, wenn Dieser Abschnitt ist nicht in einer Ansichtsvorlage implementiert, die auf .__ basiert. in der Layout-Datei (die das Auffinden von Fehlern in... Fehlern erleichtern kann).

Mit RenderSection wird also ein in der Vorlage/Ansicht definierter Abschnitt gerendert (nicht das allgemeine _Layout) . Ein wenig weiter unten unter "Implementieren des Abschnitts" Seitenleiste "in unserer Ansichtsvorlage" erläutert er die Implementierung eines Abschnitts .

Alles in allem haben Sie also einen Abschnitt namens "head", der einen Abschnitt namens "head" in einer Ansicht darstellt, die weiter unten/verschachtelt ist.

Bearbeiten: Schau mal auf http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx um zu sehen, was ich meine mit verschachtelten Ansichten - aber dieser Artikel ist jetzt über ein Jahr alt.

MasterLayout:

@RenderSection("head", false)

SubLayout:

@{
    Layout = "~/Views/_MasterLayout.cshtml";
}
@section head
{
    @RenderSection("head")
}

Inhalt:

@{
    Layout = "~/Views/_SubLayout.cshtml";
}
@section head
{
    <title>Content-Layout</title>
}
46
Brunner

Sie definieren den Abschnitt in einer Ansicht und rendern ihn in der _Layout.cshtml.

Platzieren Sie in Ihrer Layout-Seite Folgendes:

 @RenderSection("head", false)

Platzieren Sie in Ihrer Ansichtsseite Folgendes:

@section head {

PUT VIEW SPECIFIC CODE HERE
}

Hier ist "head" der Name eines Abschnitts, den Sie auf Ihrer Ansichtsseite definieren können.

Es ist ein bisschen wie ContentPlaceHolder, den wir in asp.net-Webformularen verwenden.

17

Durch die Verwendung von @rendersection in Ihrer _Layout-Datei haben Sie die Kontrolle über das Layout und die Reihenfolge der Abschnitte in Ihrem .cshtml-Hauptcode (nennen wir den Namen index.cshtml).

Wenn Sie beispielsweise am Ende Ihrer _Layout-Datei eine @RenderSection-Datei ("scripts", false) haben, wird der Abschnitt "scripts" oben in Ihren index.cshtml-Dateien angezeigt, jedoch unten . So stellen Sie sicher, dass alle Skriptabschnitte in Ihrer Anwendung konsistent geladen werden.

Wenn Sie sich aus irgendeinem Grund entschieden haben, alle Skripts in den Head-Bereich zu verschieben, können Sie dies ganz einfach tun, indem Sie einfach eine Codezeile in der _Layout-Datei verschieben.

0
user3094826