我建议您在使用 Razor 的布局页面上通读此 MSDN article。
听起来你在重复你的标题信息。
从文章中,
许多网站都有显示在每个页面上的内容,例如
页眉和页脚,或一个告诉用户他们已登录的框。
ASP.NET 允许您创建一个带有内容块的单独文件,该文件可以
包含文本、标记和代码,就像普通网页一样。你可以
然后在您所在网站的其他页面中插入内容块
希望信息出现。这样你就不必复制和
将相同的内容粘贴到每个页面中。
换句话说,布局页面包含您希望在每个页面上重复的所有标记。这样,您不必手动重复。
一个内容页面可以有多个部分,如果您愿意,这很有用
使用具有可替换内容的多个区域的布局。在
内容页面,您给每个部分一个唯一的名称。 (默认
部分未命名。)在布局页面中,添加一个 RenderBody
方法来指定未命名(默认)部分应出现的位置。
然后,您添加单独的 RenderSection 方法以呈现命名
单独的部分。
由于每个页面可能有多个部分,您可以使用 RenderSection 方法在布局中区分它们。
这是文章中的一个示例:
<!DOCTYPE html>
<html>
<head>
<title>Multisection Content</title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<div>This content will repeat on every view that uses this layout.</div>
@RenderSection("header", required: false)
</div>
<div id="main">
@RenderBody()
</div>
</body>
</html>
如您所见,任何标题信息都将使用 RenderSection 方法加载。在您看来,您可以使用类似于以下的代码来定义该部分:
@section header {
<div>
This content will only repeat on the page that it is declared in.
</div>
}
所以,当你运行它时,你会得到:
<!DOCTYPE html>
<html>
<head>
<title>Multisection Content</title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<div>This content will repeat on every view that uses this layout.</div>
<div>
This content will only repeat on the page that it is declared in.
</div>
</div>
<div id="main">
...
</div>
</body>
</html>
@RenderSection("header", required: false) 的required:false 部分意味着您不必在使用该布局的每个视图中都包含Section“标题”。它是可选的。如果您没有将 required 设置为 false,则需要在使用该布局的每个页面上声明它。
附带说明,请确保您仅在其中一个位置声明您的 css 和 javascript,如果要重复,最好是布局页面。然而,这并不意味着你不能同时拥有 css 和 javascript。例如,如果您在项目中使用引导程序,则应将其包含在布局页面中,这样您就不会在整个视图中重复包含。但是,例如,您可以仅在您的视图中而不是布局中包含视图特定的 javascript 文件。