ASP.NET从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

1.4 ASP.NET网页语法

视频讲解

1.4.1 ASP.NET网页扩展名

网站应用程序中可以包含很多文件类型。例如,在ASP.NET中经常使用的ASP.NET Web窗体页就是以.aspx为扩展名的文件。关于ASP.NET网页其他扩展名的具体描述如表1.3所示。

表1.3 ASP.NET网页扩展名

1.4.2 页面指令

ASP.NET页面中的前几行一般是<%@…%>这样的代码,这叫作页面的指令,用来定义ASP.NET页分析器和编译器使用的特定于该页的一些定义。在.aspx文件中使用的页面指令一般有以下几种。

1. <%@Page%>

通过<%@Page%>指令可定义ASP.NET页分析器和编译器使用的属性,一个页面只能有一个这样的指令。

2. <%@Import Namespace="Value"%>

通过<%@Import Namespace="Value"%>指令可将命名空间导入ASP.NET应用程序文件中,一个指令只能导入一个命名空间,如果要导入多个命名空间,应使用多个@Import指令来执行。有的命名空间是ASP.NET默认导入的,没有必要再重复导入。

说明

ASP.NET 4.0默认导入的命名空间包括System、System.Configuration、System.Data、System.Linq、System.Web、System.Web.Security、System.Web.UI、System.Web.UI.HtmlControls、System.Web.UI.WebControls、System.Web.UI.WebControls.WebParts和System.Xml.Linq。

3. <%@OutputCache%>

通过<%@OutputCache%>指令可设置页或页中包含的用户控件的输出缓存策略。

4. <%@Implements Interface="接口名称"%>

<%@Implements Interface="接口名称"%>指令用来定义要在页或用户控件中实现的接口。

5. <%@Register%>

<%@Register%>指令用于创建标记前缀和自定义控件之间的关联关系,有以下3种写法。

  • ☑ tagprefix:提供对包含指令的文件中所使用的标记的命名空间的短引用的别名。
  • ☑ namespace:正在注册的自定义控件的命名空间。
  • ☑ tagname:与类关联的任意别名。此属性只用于用户控件。
  • ☑ src:与tagprefix:tagname对关联的声明性用户控件文件的位置,可以是相对的地址,也可以是绝对的地址。
  • ☑ assembly:与tagprefix属性关联的命名空间的程序集,程序集名称不包括文件扩展名。如果将自定义控件的源代码文件放置在应用程序的App_Code文件夹下,ASP.NET 4.0在运行时会动态编译源文件,因此不必使用assembly属性。

1.4.3 ASPX文件内容注释

服务器端注释(<%--注释内容--%>)允许开发人员在ASP.NET应用程序文件的任何部分(除了<script>代码块内部)嵌入代码注释。服务器端注释元素的开始标记和结束标记之间的任何内容,不管是ASP.NET代码还是文本,都不会在服务器上进行处理或呈现在结果页上。

例如,使用服务器端注释TextBox控件,代码如下:

执行后,浏览器中将不显示此文本框。

如果<script>代码块中的代码需要注释,则使用HTML代码中的注释(<!--注释//-->)。此标记用于告知浏览器忽略该标记中的语句。例如:

注意

服务器端注释用于页面的主体,但不在服务器端代码块中使用。当在代码声明块(包含在<script runat="server"></script>标记中的代码)或代码呈现块(包含在<%%>标记中的代码)中使用特定语言时,应使用用于编码的语言的注释语法。如果在<% %>块中使用服务器端注释块,则会出现编译错误。开始和结束注释标记可以出现在同一行代码中,也可以由许多被注释掉的行隔开。服务器端注释块不能被嵌套。

1.4.4 服务器端文件包含

服务器端文件包含用于将指定文件的内容插入ASP.NET文件中,这些文件包括网页(.aspx文件)、用户控件文件(.ascx文件)和Global.asax文件。包含文件是在编译之前被包含的文件按原始格式插入到原始位置,相当于将两个文件组合为一个文件,两个文件的内容必须符合.aspx文件的要求。

语法如下:

  • ☑ file:文件名是相对于包含带有#include指令的文件目录的物理路径,此路径可以是相对的。
  • ☑ virtual:文件名是网站中虚拟目录的虚拟路径,此路径可以是相对的。

注意

使用file属性时包含的文件可以位于同一目录或子目录中,但该文件不能位于带有#include指令的文件的上级目录中。由于文件的物理路径可能会更改,因此建议采用virtual属性。

例如,使用服务器端包含指令语法调用将在ASP.NET页上创建页眉的文件,这里使用的是相对路径,代码如下:

注意

赋予file或virtual属性的值必须用引号("")括起来。

1.4.5 HTML服务器控件语法

默认情况下,ASP.NET文件中的HTML元素作为文本进行处理,页面开发人员无法在服务器端访问文件中的HTML元素。要使这些元素可以被服务器端访问,必须将HTML元素作为服务器控件进行分析和处理,这可以通过为HTML元素添加runat="server"属性来完成。服务器端通过HTML元素的id属性引用该控件。

语法如下:

例如,使用HTML服务器端控件创建一个简单的Web应用程序,单击Red按钮将Web页的背景改为红色,程序代码如下:

运行结果如图1.41所示。

图1.41 HTML服务器控件举例

注意

HTML服务器控件必须位于具有runat="server"属性的<form>标记中。

1.4.6 ASP.NET服务器控件语法

ASP.NET服务器控件比HTML服务器控件具有更多的内置功能。Web服务器控件不仅包括窗体控件(如按钮和文本框),而且还包括特殊用途的控件(如日历、菜单和树视图控件)。Web服务器控件比HTML服务器控件更抽象,因为其对象模型不一定反映HTML语法。

语法如下:

例如,使用服务器端控件语法添加控件,程序代码如下:

注意

在以上代码中,必须将<script>标记内的language属性设置为C#,否则<script>标记内不支持使用C#代码。

1.4.7 代码块语法

代码块语法是定义网页呈现时所执行的内嵌代码。定义内嵌代码的语法标记元素为:

例如,使用代码块语法,根据系统时间显示“上午好!”或“下午好!”,具体代码如下:

说明

在以上代码中,DateTime对象用于表示时间上的一刻,通常以日期和当天的时间表示。其包含在System命名空间中。

1.4.8 表达式语法

定义内嵌表达式使用的语法标记元素为:

例如,在网页上显示字体大小不同的文本,代码如下:

说明

在以上代码中,使用for循环语句执行6次循环内容。