我尝试了解Razor视图中的工作部分。我有2个布局文件:_Layout.cshtml
和_LayoutChild.cshtml
,它们使用内部的第一个布局。我尝试在_Layout.cshtml
中声明部分并将其呈现在同一个文件中。标记没有出现但是当我在_LayoutChild.cshtml
中声明部分时一切正常。见下面的例子:
_Layout.cshtml:
<!DOCTYPE html>
<html>
<head>
@RenderSection("A", false)
</head>
<body>
@section A{
<script>
alert("I'm in Layout!");
</script>
}
</body>
</html>
_LayoutChild.cshtml
@{
Layout = "_Layout";
}
@section A{
<script>
alert("I'm in LayoutChild!");
</script>
}
我明白在同一个文件中声明部分看起来很奇怪,但我想知道它为什么不起作用?
答案 0 :(得分:0)
开发网站或应用程序时。每个页面都有一些常见的部分,如页眉,页脚,侧边栏等。在每个页面上编写和维护这些都是一项艰苦的工作。所以,我们需要一种方法将它们放在一个地方。幸运的是,在MVC中我们有布局概念。我们将所有常用代码放入其中并更改Views
中的内容,这些内容将在我们调用@RenderBody()
方法的布局中呈现。
为什么我们需要sections
?
有些时候,我们希望在某些特定网页上展示特定内容,例如仅在博客和主页上显示的新手,最新消息或特定网页上的某些广告横幅。对于这些类型的场景,sections
在MVC中拯救我们。
我们如何使用section
?
我们需要按照这两个步骤来使用MVC中的部分。
当视图呈现时,部分内容也会添加到我们声明该部分的位置。
代码示例
1。大部分时间我们都需要一些特定的javascript代码才能查看。所以我们可以这样做
<强> _Layout.cshtml 强>
@RenderSection("scripts", required: false)
<强> view.cshtml 强>
@section scripts{
<script>
alert("I'm in Layout!");
</script>
}
2. 新闻信例
<强> _Layout.cshtml 强>
@RenderSection("newletter", required: false)
<强> view.cshtml 强>
@section newletter{
<h3> New Letter </h3>
... rest of the html ...
}