Ответ 1
Просто из-за удобства. Оказание тела - это то, что вы, скорее всего, сделаете так хорошо, чтобы иметь для этого специальную функцию. Не позволяет вам объявлять @section для тела и дает более удобную функцию вызова.
В синтаксисе MVC/Razor я пытаюсь понять, зачем нам @RenderBody
.
Например (код, взятый из пример)
<html>
<head>
<meta charset="utf-8" />
<title>My WebSite</title>
<style>
#container { width: 700px; }
#left { float: left; width: 150px; }
#content { padding: 0 210px 0 160px; }
#right { float: right; width: 200px; }
.clear { clear: both; }
</style>
</head>
<body>
<div id="container">
<div id="left">
@RenderSection("left", required:false)
</div>
<div id="content">
@RenderBody()
</div>
<div id="right">
@RenderSection("right", required:false)
</div>
<div class="clear"></div>
</div>
</body>
</html>
@{
Layout = "~/_3ColLayout.cshtml";
}
<h1>Main Content</h1>
@section left {
<h1>Left Content</h1>
}
@section right {
<h1>Right Content</h1>
}
Почему я не могу просто использовать @RenderSection
для всего, как это:
<div id="content">
@RenderSection("Body", required:true)
</div>
@section Body{
<h1>Body Content</h1>
}
Просто из-за удобства. Оказание тела - это то, что вы, скорее всего, сделаете так хорошо, чтобы иметь для этого специальную функцию. Не позволяет вам объявлять @section для тела и дает более удобную функцию вызова.
Начните с @RenderBody
, это очень важно. Ваш _layout должен иметь это. Здесь будет отображаться ваш взгляд. Если вы оставите это, ваше приложение умрет (я думаю, что во время выполнения, поскольку Views не скомпилированы).
[ Исправление: Без Renderbody представление, ссылающееся на этот конкретный макет, будет умирать во время выполнения. (Важно отметить, что сами макеты необязательны.)]
Разделы - это кодовые блоки, определенные в вашем представлении с похожими именами
@RenderSection ( "Navbar", обязательно: false)может иметь соответствующий код в вашем представлении.
@section Navbar{
<!-- Content Here -->
}
Я подчеркиваю может, потому что Navbar делится required: false
Разделы - это способ, с помощью которого каждый вид может совместно использовать часть функциональности/разметки с помощью _layout.
Followup: В свое скромное время разработки MVC я научился скромно использовать разделы.
RenderBody
требуется, так как он отображает каждое представление. RenderSection
имеет необязательный параметр, который позволяет отмечать раздел как необязательный.
здесь - основная информация о RenderBody() и RenderPage().