ASP.NET .NET Framework 中的内联表达式

本文包含以下 ASP.NET 内联表达式简介:

  • <% ... %>
  • <%= ... %>
  • <%@ ... %>
  • <%# ... %>
  • <%$ ... %>
  • <%-- ... --%>

原始产品版本: .NET Framework
原始 KB 数: 976112

<% ... %> 嵌入式代码块

嵌入式代码块用于保留与经典 ASP 的向后兼容性。 块中的代码可以在页面呈现阶段执行当前页类中的编程语句和调用函数。

以下示例演示了一个 ASP.NET 页,该页在嵌入式代码块中具有示例Microsoft Visual Basic .NET 代码以显示循环的结果:

<%@ Page Language="VB" %>
<html>
<body>
    <form id="form1" runat="server">
        <% For i As Integer = 16 To 24 Step 2%>
            <div style="font-size: <% Response.Write(i)%>">
                Hello World<br />
            </div>
        <% Next%>
    </form>
</body>
</html>

由于嵌入的代码块始终与超文本标记语言(HTML)源混合,因此开发人员很难读取和维护它们。

有关 ASP.NET 网页中嵌入的代码块的详细信息,请访问 ASP.NET Web 窗体页中的嵌入式代码块。

<%= ... %> 显示表达式

<%= ... %>显示表达式等效于仅包含语句的Response.Write(...)嵌入代码块。 这是显示信息(如单个字符串、int 变量或常量)的最简单方法。

例如,以下示例代码显示当前时间:

<%@ Page Language="VB" %>
<html>
    <body>
        <form id="form1" runat="server">
            <%=DateTime.Now.ToString() %>
        </form>
    </body>
</html>

请记住,显示表达式不能用于服务器控件的属性。 这是因为 .NET Framework 直接编译整个表达式,而不是将内容显示为特性的值。

有关如何显示来自 ASP.NET 的信息的详细信息,请访问 “从 ASP.NET 显示”。

<%@ ... %> 指令表达式

指令表达式是一种语法,用于指定在处理 web 窗体(.aspx)页和用户控件(.ascx)文件时由页面和用户控件 ASP.NET 编译器使用的设置。

ASP.NET 页框架支持以下指令:

指令 说明
@ Page 定义由 ASP.NET 页分析器和编译器使用的特定于页面的属性。 只能包含在.aspx文件中。
此指令名称只能在 ASP.NET 网页中使用。
@ Control 定义 ASP.NET 页分析器和编译器使用的特定于控件的属性。 只能包含在 .ascx 文件中(用户控件)。
指令名称只能在用户控件文件中使用。
@ Import 将命名空间显式导入页面或用户控件。
@ Implements 以声明方式指示页面或用户控件实现指定的 .NET Framework 接口。
@ Register 将别名与命名空间和类名相关联。 这允许在请求的页面或用户控件中包含用户控件和自定义服务器控件时呈现这些控件。
@ Assembly 在编译过程中将程序集链接到当前页。 它使所有程序集的类和接口都可用于页面上。
@ Master 标识 ASP.NET 母版页。
@ WebHandler 标识 ASP.NET IHttpHandler 页。
@ PreviousPageType 提供一种方法,用于根据通过 PreviousPage 属性访问的上一页获取强键入。
@ MasterType 将类名分配给 ASP.NET 页的 Master 属性。 提供创建对 ASP.NET 母版页的强类型引用的方法。
@ OutputCache 以声明方式控制页面或用户控件的输出缓存策略。
@ Reference 以声明方式将页面或用户控件链接到当前页或用户控件。

有关指令语法的详细信息,请访问 文本模板指令语法

<%# ... %> 数据绑定表达式

当页面上调用此服务器控件的 DataBind 方法时,数据绑定表达式会在服务器控件属性和数据源之间创建绑定。

以下示例演示如何使用数据绑定表达式将字符串从函数绑定到标签的 Text 属性:

<%@ Page Language="VB" %>
<script runat="server">
    Protected Function SayHello() As String
        Return "Hello World"
    End Function

    Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
        lblHello.DataBind()
    End Sub
</script>
<html>
    <body>
        <form id="form1" runat="server">
            <asp:Label ID="lblHello" runat="server" Text="<%# SayHello%>"></asp:Label>
        </form>
    </body>
</html>

有关数据绑定表达式语法的详细信息,请访问 数据绑定表达式语法

<%$ ... %> 表达式生成器

表达式生成器用于根据应用程序配置或资源文件中包含的信息设置控件属性的值。 以下示例是表达式生成器的基本语法:
<%$ Expression Prefix: Expression Value %>

美元符号 ($) 指示 ASP.NET 以下表达式是表达式生成器。 表达式前缀定义表达式的类型,例如 AppSettingsConnectionStringsResources。 此外,还可以创建和定义自己的表达式生成器。 冒号后面的表达式值(:)是 ASP.NET 实际用作特定属性的值。

以下演示演示如何使用表达式生成器从 AppSettings Web.config 文件中的节点获取网站的版权,以及如何将版权信息设置为文本文本属性的值。

Web.config 文件中的AppSettings节点:

<appSettings>
    <add key="copyright" value="(c) Copyright 2009 WebSiteName.com"/>
</appSettings>

ASP.NET Web 窗体页中的表达式生成器:

<div id="footer">
    <asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>

有关 ASP.NET 表达式的详细信息,请访问 ASP.NET 表达式概述

<%-- ... -- %> 服务器端注释块

服务器端注释块允许开发人员将代码注释嵌入 ASP.NET 网页的 HTML 源的任何位置(代码块内 <script> 除外)。 服务器端注释块的开始标记和结束标记之间的任何内容都不会在服务器上处理或呈现在生成的页面上。

以下代码示例演示如何在 ASP.NET 页中使用服务器端注释块:

<%@ Page Language="VB" %>
<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim strName As String
        strName = Session("userName")
        lblUserName.Text = strName
    End Sub
</script>
<html>
    <body>
        <form id="form1" runat="server">
            <%-- Label for UserName --%>
            <asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
        </form>
    </body>
</html>

有关服务器端注释的详细信息,请访问 服务器端注释