Jaki jest cel @RenderSection i jak działa? Rozumiem, do czego służą pakiety, ale jeszcze nie wiem, co to robi i prawdopodobnie jest to ważne.
@RenderSection("scripts", required: false)
Może mały przykład, jak go używać?
źródło
Jaki jest cel @RenderSection i jak działa? Rozumiem, do czego służą pakiety, ale jeszcze nie wiem, co to robi i prawdopodobnie jest to ważne.
@RenderSection("scripts", required: false)
Może mały przykład, jak go używać?
Jeśli masz taki widok _Layout.cshtml
<html>
<body>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
wtedy możesz mieć widok zawartości index.cshtml w ten sposób
@section scripts {
<script type="text/javascript">alert('hello');</script>
}
wymagane wskazuje, czy widok za pomocą strony układu musi mieć przekrój scripts
Jeśli
(1) masz widok _Layout.cshtml taki jak ten
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
(2) masz 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) masz About.cshtml
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
Na twojej stronie układu, jeśli wymagane jest ustawione na false "@RenderSection (" scripts ", required: false)", Kiedy strona jest renderowana, a użytkownik jest na stronie, plik contacts.js nie jest renderowany.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
jeśli wymagane jest ustawione na true "@RenderSection (" scripts ", required: true)", Kiedy strona jest renderowana, a użytkownik znajduje się na stronie ABOUT, plik contacts.js STILL jest renderowany.
<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>
W SKRÓCIE, jeśli ustawione na true , czy tego potrzebujesz, czy nie na innych stronach, i tak zostanie wyrenderowane. Jeśli ustawiona na false , będzie renderowana tylko wtedy, gdy strona podrzędna jest renderowana.
Section not defined: "scripts".
podczas renderowania strony Informacje podczas ustawiania wymaganej flagi zostanie wyświetlony symboltrue
.Tutaj definicja Rendersection from
MSDN
Na stronie _layout.cs umieść
Tutaj renderuj zawartość sekcji bootom i
false
określ właściwość logiczną, aby określić, czy sekcja jest wymagana, czy nie.Oznacza to, że jeśli chcesz mieć dolną sekcję na wszystkich stronach, musisz użyć false jako drugiego parametru w metodzie Rendersection.
źródło
Załóżmy, że mam GetAllEmployees.cshtml
I kolejny widok „GetEmployeeDetails.cshtml” bez skryptów
A moja strona układu „_layout.cshtml”
Tak więc, kiedy przechodzę do GetEmployeeDetails.cshtml. Otrzymuję błąd, że w GetEmployeeDetails.cshtml nie ma skryptów sekcji do renderowania. Jeśli zmienię flagę
@RenderSection()
zrequired : true
na „wymagane: fałsz”. Oznacza to renderowanie skryptów zdefiniowanych w skryptach @section widoków, jeśli są obecne. A dopracowane podejście byłoby w _layout.cshtmlźródło