Yanıtlar:
Bunun gibi bir _Layout.cshtml görünümünüz varsa
<html>
<body>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
böyle bir index.cshtml içerik görünümüne sahip olabilirsiniz
@section scripts {
<script type="text/javascript">alert('hello');</script>
}
Gerekli düzeni sayfasını kullanarak görünümü bir komut bölümü olması gerekir olmadığını belirtir
Eğer
(1) bunun gibi bir _Layout.cshtml görünümünüz var
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
(2) Contacts.cshtml dosyanız var
@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) About.cshtml dosyanız var
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
Düzen sayfanızda, gerekirse false "@RenderSection (" komut dosyaları ", gerekli: false)" olarak ayarlanırsa, Sayfa işlendiğinde ve kullanıcı yaklaşık sayfada olduğunda, contacts.js işlenmez.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
gerekirse true "@RenderSection (" komut dosyaları ", gerekli: true)" olarak ayarlanırsa, Sayfa görüntülendiğinde ve kullanıcı HAKKINDA sayfasında olduğunda contacts.js STILL oluşturulur.
<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>
KISA olarak, true olarak ayarlandığında , diğer sayfalarda ihtiyacınız olsun ya da olmasın, yine de işlenir. False değerine ayarlanırsa , yalnızca alt sayfa oluşturulduğunda oluşturulur.
Burada Rendersection'ın tanımı MSDN
Düzen sayfalarında, adlandırılmış bir bölümün içeriğini oluşturur. MSDN
_Layout.cs sayfasına koy
@RenderSection("Bottom",false)
Burada bootom bölümünün içeriğini oluşturun ve false
bölümün gerekli olup olmadığını belirtmek için boolean özelliğini belirtir.
@section Bottom{
This message form bottom.
}
Bu, tüm sayfalarda bölümün dibine inmek istiyorsanız, Rendersection yönteminde ikinci parametre olarak false kullanmanız gerekir.
Diyelim GetAllEmployees.cshtml
<h2>GetAllEmployees</h2>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
// do something ...
</thead>
<tbody>
// do something ...
</tbody>
</table>
//Added my custom scripts in the scripts sections
@section Scripts
{
<script src="~/js/customScripts.js"></script>
}
Komut dosyası içermeyen başka bir görünüm "GetEmployeeDetails.cshtml"
<h2>GetEmployeeByDetails</h2>
@Model.PageTitle
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
// do something ...
</thead>
<tbody>
// do something ...
</tbody>
</table>
Düzen sayfam "_layout.cshtml"
@RenderSection("Scripts", required: true)
Bu yüzden GetEmployeeDetails.cshtml dosyasına gittiğimde. GetEmployeeDetails.cshtml'de işlenecek hiçbir bölüm komut dosyası yok hatası alıyorum. Ben de bayrak değiştirirseniz @RenderSection()
gelen required : true
için `` gerekli: FALSE. Varsa, görünümlerin bölüm komut dosyalarında tanımlanan komut dosyalarını oluşturmak anlamına gelir. Ve rafine yaklaşım _layout.cshtml
@if (IsSectionDefined("Scripts"))
{
@RenderSection("Scripts", required: true)
}
Section not defined: "scripts".
Hakkında sayfanızı oluştururken gereken bayrağı ayarlarken bir not alacağınızı göreceksiniztrue
.