RenderSection 主要的用途是在主版面 _layout.cshtm 中定義一些區塊。
像是以下這段
<div id="body">
<div class="container">
@RenderSection("featured", required: false)
<section class="content-wrapper clear-fix">
@RenderBody()
</section>
</div>
</div>
<footer>
@Html.Partial("Footer")
</footer>
@RenderSection("scripts", required: false)
微軟預設主版面的程式碼
@RenderBody() 是會產生其他view的畫面
@RenderSection("featured", required: false) 這個就是主版面預留的section
此方法的第二個參數 就是設定這個section是不是每個頁面都一定要實作
設定false 就是不用每個頁面都實作
true的時候 就每個頁面一定都要有這個區塊
不然會出現exception
要在每個頁面設定值的方法如下
@section featured {
<div class="jumbotron">
<h1>@ViewBag.CategoryName.</h1>
<p>@ViewBag.Message</p>
</div>
}
這樣就會在主版頁面featured區塊顯示這段HTML
同理 要使用@RenderSection("scripts", required: false)這塊
就這樣設定
@section scripts {
<script>
$(document).ready(function () {
initForm();
});
</script>
}
此時如果對版面比較要求的人就會延伸出一個問題,我如果有頁面不想設定此區塊,能不能給他預設值,因為我懶得每一頁都設定預設值
此時可以使用IsSectionDefined來判斷頁面有沒有設定section
@if (IsSectionDefined("featured"))
{
@RenderSection("featured", required: false)
}
else
{
<p>Section not define.</p>
}