ASP.NET Web Pages - 页面布局

通过 Web Pages,很容易创建布局一致的网站。

一致的外观

在因特网上,您会发现很多拥有统一外观的网站:

  • 每页拥有相同的页眉
  • 每页拥有相同的页脚
  • 每页拥有相同的样式和布局

通过 Web Pages,可以高效地实现这些。您可以得到可重复使用的代码块(内容块),比如页眉和页脚,在独立的文件中。

您也可以为所有页面定义一致的布局,使用布局模板(布局文件)。

内容块

很多网站都有需要在每张页面上显示的内容(比如页眉和页脚)。

通过 Web Pages,您可以使用 @RenderPage() 方法从不同的文件导入内容。

内容块(来自另一个文件)能够被输入网页中的任意位置,并可包含文本、标记和代码,就像任何常规的网页那样。

使用通用的页眉和页脚,会省去大量的工作。您不必在每页中编写相同的内容,并且当您改变页眉或页脚文件时,内容会在所有页面中更新。

在代码中是这样的:

实例

<html>
<body>
@RenderPage("header.cshtml")
<h1>Hello Web Pages</h1> 
<p>This is a paragraph</p>
@RenderPage("footer.cshtml")
</body>
</html>

运行实例

使用布局页面

在之前的内容中,您已看到在多个网页中引用相同的内容是很简单的。

创建一致外观的另一种方法是使用布局网页。布局网页包含网页的结构,而不是内容。当网页(内容页)链接到布局页时,它会根据布局页(模板)来显示。

布局页类似普通的网页,但是会在引用内容页的位置调用 @RenderBody() 方法。

每个内容页必须以 Layout 指令开头。

在代码中是这样的:

布局网页:

<html>
<body>
<p>这是文本。</p>
@RenderBody()
<p>© 2012 W3School. All rights reserved.</p>
</body>
</html>

任意网页:

@{Layout="Layout.cshtml";}

<h1>Welcome to W3School</h1>

<p>
这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。
这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。
这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。
</p>

运行实例

不要重复自己

通过两个 ASP.NET 工具,内容块和布局页,您能够为 web 应用程序设定一致的外观。

这些工具会为您省去大量的工作,因为您不必在所有页面上重复相同的信息。将标记、样式和代码集中起来,使得 web 应用程序更便于管理和维护。

防止代码泄露

在 ASP.NET 中,名称以下划线开头的文件无法通过 web 来浏览。

如果您希望禁止用户查看内容块或布局文件,请对文件重新命名:

  • _header.cshtm
  • _footer.cshtml
  • _Layout.cshtml

隐藏敏感信息

在 ASP.NET 中,隐藏敏感信息(数据库密码、电邮密码等)的常用方法是把这些信息保存在名为 "_AppStart" 的独立文件中。

_AppStart.cshtml

@{
WebMail.SmtpServer = "mailserver.example.com";
WebMail.EnableSsl = true;
WebMail.UserName = "username@example.com";
WebMail.Password = "your-password";
WebMail.From = "your-name-here@example.com";
}