2014-04-27 10 views
84

Was ist der Zweck und wie funktioniert es.Ich verstehe, was Bündel tun, aber ich habe noch herauszufinden, was dies tut und es ist wahrscheinlich wichtig.Was ist @RenderSection in asp.net MVC

@RenderSection("scripts", required: false) 

vielleicht ein kleines Beispiel, wie man es benutzt?

Antwort

148

Wenn Sie eine _Layout.cshtml Ansicht wie diese haben

<html> 
    <body> 
     @RenderBody() 
     @RenderSection("scripts", required: false) 
    </body> 
</html> 

dann können Sie eine index.cshtml Inhalt Ansicht haben wie diese

@section scripts { 
    <script type="text/javascript">alert('hello');</script> 
} 

die erforderlich zeigt an, ob die Ansicht Verwenden der Layout-Seite muss einen Abschnitt Skripte haben

11

Wenn

(1) haben Sie eine _Layout.cshtml Ansicht wie dieser

<html> 
    <body> 
     @RenderBody() 

    </body> 
    <script type="text/javascript" src="~/lib/layout.js"></script> 
    @RenderSection("scripts", required: false) 
</html> 

(2) Sie haben Contacts.cshtml

@section Scripts{ 
    <script type="text/javascript" src="~/lib/contacts.js"></script> 

} 
<div class="row"> 
    <div class="col-md-6 col-md-offset-3"> 
     <h2> Contacts</h2> 
    </div> 
</div> 

(3) Sie haben About.cshtml

<div class="row"> 
    <div class="col-md-6 col-md-offset-3"> 
     <h2> Contacts</h2> 
    </div> 
</div> 

Auf Ihrer Layoutseite wird, falls erforderlich, auf false gesetzt "@RenderSection (" scripts ", erforderlich: false)" Wenn die Seite rendert und der Benutzer sich auf der Seite befindet, wird contacts.js nicht gerendert.

<html> 
     <body><div>About<div>    
     </body> 
     <script type="text/javascript" src="~/lib/layout.js"></script> 
    </html> 

wenn gesetzt erforderlich ist, um wahr „@RenderSection (“ Skripte „erforderlich: true)“ Wenn Seite rendert und Benutzer auf ÜBER Seite, die contacts.js STILL gerendert wird.

<html> 
    <body><div>About<div>    
    </body> 
    <script type="text/javascript" src="~/lib/layout.js"></script> 
    <script type="text/javascript" src="~/lib/contacts.js"></script> 
</html> 

Kurz gesagt, wenn auf wahr, ob Sie es oder nicht auf anderen Seiten benötigen, wird es sowieso gemacht bekommen. Wenn der Wert false ist, wird er nur gerendert, wenn die untergeordnete Seite gerendert wird.

+5

Dies ist nicht korrekt. Sie sollten Ihre Antwort selbst versuchen, und Sie werden feststellen, dass Sie eine 'Section not defined:" scripts ".' Beim Rendern Ihrer About-Seite bekommen, wenn Sie die Flagge auf 'true' setzen. – cgijbels

Verwandte Themen