ASP.NET 网页语法概述

更新:2007 年 11 月

ASP.NET 网页的创建方式与静态 HTML 网页(不包含基于服务器处理的页面)的创建方式相似,但前者包含在页面运行时由 ASP.NET 识别和处理的其他元素。区别 ASP.NET 网页与静态 HTML(或其他)页的特征如下:

  • 文件扩展名为 .aspx,而不是 .htm、.html 或其他文件扩展名。.aspx 文件扩展名可使 ASP.NET 对页面进行处理。

    k33801s3.alert_note(zh-cn,VS.90).gif说明:

    在 Internet 信息服务 (IIS) 中将文件扩展名映射到 ASP.NET。默认情况下,.aspx 页由 ASP.NET 运行,而 .htm 和 .html 页不是。

  • 可选的 @ Page 指令或其他指令,适合于正在创建的页面类型。

  • 为 ASP.NET 正确配置的 form 元素。只有页面所含控件的值在页面处理期间要使用时,才需要 form 元素。

  • Web 服务器控件。

  • 如果您向页面添加自己的代码,则为服务器代码。

    k33801s3.alert_note(zh-cn,VS.90).gif说明:

    如果希望页面符合 XHTML 标准,则必须包含其他元素,如 DOCTYPE 元素。有关详细信息,请参见 ASP.NET 和 XHTML

以下各节提供有关这些元素的更多详细信息。

可以使用 .aspx 文件扩展名对任何 HTML 页进行重命名,然后该页将作为 ASP.NET 网页运行。但是,如果页面不涉及服务器处理,则不需要向其添加 .aspx 文件扩展名,因为这会增加页面处理的系统开销。

ASP.NET 网页示例

下面的代码示例演示一个页面,它包含组成 ASP.NET 网页的基本元素。该页面包含 HTML 页中可能含有的静态文本,以及特定于 ASP.NET. 的元素。特定于 ASP.NET 的元素将突出显示。

k33801s3.alert_note(zh-cn,VS.90).gif说明:

为清楚起见,此示例页不配置为符合 XHTML。有关详细信息,请参见 ASP.NET 和 XHTML

k33801s3.alert_security(zh-cn,VS.90).gif安全说明:

此示例页包含一个接受用户输入的文本框,这将是一个潜在的安全威胁。默认情况下,ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述

<%@ Page Language="VB" %>
<html>
<script runat="server">    Sub Button1_Click(ByVal sender As Object, _        ByVal e As System.EventArgs)        Label1.Text = "Welcome, " & TextBox1.Text    End Sub</script>
<head runat="server">
  <title>Basic ASP.NET Web Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <h1>Welcome to ASP.NET</h1>
    <p>Type your name and click the button.</p>
    <p>
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" />
    </p>
    <p>
      <asp:Label ID="Label1" runat="server"></asp:Label>
    </p>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script runat="server">Void Button1_Click(object sender, System.EventArgs e) {    Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head runat="server">
  <title>Basic ASP.NET Web Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <h1>Welcome to ASP.NET</h1>
    <p>Type your name and click the button.</p>
    <p>
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>      <asp:Button ID="Button1" runat="server"         Text="Click" OnClick="Button1_Click" />
    </p>
    <p>
      <asp:Label ID="Label1" runat="server"></asp:Label>
    </p>
  </form>
</body>
</html>

@ 指令

ASP.NET 页通常包含一些指令,这些指令允许您为相应页指定页属性和配置信息。这些指令由 ASP.NET 用作处理页面的指令,但不作为发送到浏览器的标记的一部分呈现。

最常用的指令为 @ Page 指令,该指令允许您为页面指定多个配置选项,包括:

  • 页面中代码的服务器编程语言。

  • 页面是将服务器代码直接包含在其中(称为单文件页面),还是将代码包含在单独的类文件中(称为代码隐藏页面)。在前面的示例中,页面为单文件页面;代码直接包含在页面中,而 @ Page 指令不包含有关链接类文件的信息。有关更多信息,请参见本主题后面部分的“服务器代码”一节以及 ASP.NET 网页代码模型

  • 调试和跟踪选项。

  • 页面是否具有关联的母版页,是否应据此将其视为内容页。

如果页面中不包含 @ Page 指令,或者该指令不包含特定设置,则从 Web 应用程序的配置文件(Web.config 文件)或站点配置文件(Machine.config 文件)继承设置。

除了包含 @ Page 指令之外,还可以包含支持附加页面特定选项的其他指令。其他常用指令如下:

  • @ Import   此指令允许您指定要在代码中引用的命名空间。

  • @ OutputCache   此指令允许您指定应当缓存页面,可同时指定有关何时缓存该页面、将该页面缓存多长时间的参数。

  • @ Implements   此指令允许您指定页面实现 .NET 接口。

  • @ Register   此指令允许您注册其他控件以便在页面上使用。@ Register 指令声明控件的标记前缀和控件程序集的位置。如果要向页面添加用户控件或自定义 ASP.NET 控件,则必须使用此指令。

某些类型的 ASP.NET 文件使用 @ Page 之外的指令。例如,ASP.NET 母版页使用 @ Master 指令,而 ASP.NET 用户控件使用 @ Control 指令。每个指令都允许您指定适合文件的不同选项。

有关详细信息,请参见 ASP.NET 母版页概述ASP.NET 用户控件

窗体元素

如果页面包含允许用户与页面交互并提交该页面的控件,则该页面必须包含一个 form 元素。可以使用标准 HTML form 元素,但要适用某些规则。使用 form 元素的规则如下:

  • 页面只能包含一个 form 元素。

  • form 元素必须包含 runat 属性,其属性值设置为 server。此属性允许您在服务器代码中以编程方式引用页面上的窗体和控件。

  • 可执行回发的服务器控件必须位于 form 元素之内。

  • 开始标记不得包含 action 属性。ASP.NET 可在处理页面时动态设置这些属性,重写您所做的任何设置。

Web 服务器控件

在大多数 ASP.NET 页中,您将添加允许用户与页面交互的控件,包括按钮、文本框、列表等。这些 Web 服务器控件与 HTML 按钮和 input 元素类似。但这些控件在服务器上处理,允许您使用服务器代码对其属性进行设置。这些控件还引发可以在服务器代码中进行处理的事件。

服务器控件使用一种特殊的语法,当页面运行时由 ASP.NET 识别这种语法。下面的代码示例演示一些典型的 Web 服务器控件。

k33801s3.alert_security(zh-cn,VS.90).gif安全说明:

TextBox 接受用户输入,这将是一个潜在的安全威胁。默认情况下,ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" 
    Text="Click" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" 
    Text="Click" OnClick="Button1_Click" />

ASP.NET 服务器控件的标记名称以前缀开头,在此情况下为 asp:。如果该控件不是 .NET Framework 的一部分,则前缀可能会有所不同。ASP.NET 服务器控件还包含 runat="server" 属性和一个可选的 ID,您可以使用这个 ID 在服务器代码中引用该控件。

当页面运行时,会对服务器控件进行标识并运行与这些控件关联的代码。许多控件会将一些 HTML 或其他标记呈现在页面中。例如,asp:textbox 控件将具有 type="text" 属性的 input 元素呈现在页面中。但是,不一定要建立 Web 服务器控件与 HTML 元素间的一对一映射。例如,asp:calendar 控件呈现一个 HTML 表。有些控件不会向浏览器呈现任何内容;这些控件只在服务器上接受处理并向其他控件提供信息。

将 HTML 元素作为服务器控件

除了使用 ASP.NET 服务器控件之外,还可以将普通的 HTML 元素作为服务器控件使用。可以将 runat="server" 属性和 ID 属性添加到页面的任何 HTML 元素中。页面运行时,ASP.NET 将该元素标识为服务器控件,并使其可用于服务器代码。例如,可以向 HTML body 元素添加所需元素,如下面的代码示例所示。

<body runat="server" id="body">

然后,可以在服务器代码中引用 body 元素,例如,在运行时根据用户输入或数据库信息设置正文的背景色。

有关更多信息,请参见 ASP.NET Web 服务器控件概述

服务器代码

大多数 ASP.NET 页包含当处理页面时在服务器上运行的代码。ASP.NET 支持多种语言,包括 C#、Visual Basic、J#、Jscript 和其他语言。

ASP.NET 支持两种编写网页服务器代码的模型。在单文件模型中,页面的代码位于 script 元素中,该元素中的开始标记包含 runat="server" 属性。本主题前面的示例演示了单文件模型。

或者,可以在单独的类文件中创建页面的代码,这种方法称为代码隐藏模型。在这种情况下,ASP.NET 网页一般不包含服务器代码。而 @ Page 指令会包含一些信息,这些信息将 .aspx 页与其关联的代码隐藏文件链接起来。下面的代码示例演示某页的一个典型 @ Page 指令,该页包含代码隐藏文件。

<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>

CodeFile 属性指定单独的类文件的名称,Inherits 属性指定与页面对应的代码隐藏文件中类的名称。

有关更多信息,请参见 ASP.NET 网页代码模型

k33801s3.alert_note(zh-cn,VS.90).gif说明:

ASP.NET 网页还可以包含在浏览器中运行以响应客户端事件的客户端脚本。ASP.NET 页既可以包含客户端脚本又可以包含服务器代码。有关详细信息,请参见 ASP.NET 网页中的客户端脚本

请参见

概念

ASP.NET 网页概述

ASP.NET 网页介绍

ASP.NET 表达式概述

其他资源

ASP.NET 配置文件语法

ASP.NET 网页编程