Pra*_*bhu 23 asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-5
在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>
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能简单地@RenderSection
用于所有事情,如下所示:
<div id="content">
@RenderSection("Body", required:true)
</div>
@section Body{
<h1>Body Content</h1>
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ich 15
首先@RenderBody
,这是至关重要的.你的_layout必须拥有它.这是您的视图将呈现的位置.如果你把它留下来,你的应用程序将会死亡(我认为在运行时,因为视图没有编译).
[ 更正: 如果没有Renderbody,引用此特定布局的视图将在运行时死亡.(重要的是要注意布局本身是可选的.)]
节是在View中定义的具有相似名称的代码块
@RenderSection("Navbar",必填:false)您的视图中可能有相应的代码块.
@section Navbar{
<!-- Content Here -->
}
Run Code Online (Sandbox Code Playgroud)
我强调可能因为Navbar是delcaredrequired: false
每个View都可以通过_layout共享一段功能/标记.
后续: 在我适度的MVC开发时,我学会了适度使用部分.