![ASP.NET从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/771/27111771/b_27111771.jpg)
1.4 ASP.NET网页语法
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P36_13492.jpg?sign=1739232943-IbDKe12eiYLzXAgViDBh9W0FcT6MFMor-0-28d78e5bc8fde32adaf01c87a407c2bd)
视频讲解
1.4.1 ASP.NET网页扩展名
网站应用程序中可以包含很多文件类型。例如,在ASP.NET中经常使用的ASP.NET Web窗体页就是以.aspx为扩展名的文件。关于ASP.NET网页其他扩展名的具体描述如表1.3所示。
表1.3 ASP.NET网页扩展名
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T36_13503.jpg?sign=1739232943-CmW8gJGzd4HSD9HuLXcIx8uaL5imXbRS-0-3176744abb4fc7f8b350aa9c8ab895eb)
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种写法。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P37_86338.jpg?sign=1739232943-SPy4zX749yu58z30XqPxy9HHezQWDbNV-0-0765e8242c3cb96f28914d27a7861cc0)
- ☑ 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控件,代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P38_86339.jpg?sign=1739232943-n97KtxVHJwzYBPrLYbn6PExpddNUqgKS-0-93292c97de3bbe8fdd385cab2ebf6db1)
执行后,浏览器中将不显示此文本框。
如果<script>代码块中的代码需要注释,则使用HTML代码中的注释(<!--注释//-->)。此标记用于告知浏览器忽略该标记中的语句。例如:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P38_86340.jpg?sign=1739232943-nPj7XgfNHDto195I2DAgwzg4nGiNl8Hp-0-c89265974fc02e3e88b829ebf85450e2)
注意
服务器端注释用于页面的主体,但不在服务器端代码块中使用。当在代码声明块(包含在<script runat="server"></script>标记中的代码)或代码呈现块(包含在<%%>标记中的代码)中使用特定语言时,应使用用于编码的语言的注释语法。如果在<% %>块中使用服务器端注释块,则会出现编译错误。开始和结束注释标记可以出现在同一行代码中,也可以由许多被注释掉的行隔开。服务器端注释块不能被嵌套。
1.4.4 服务器端文件包含
服务器端文件包含用于将指定文件的内容插入ASP.NET文件中,这些文件包括网页(.aspx文件)、用户控件文件(.ascx文件)和Global.asax文件。包含文件是在编译之前被包含的文件按原始格式插入到原始位置,相当于将两个文件组合为一个文件,两个文件的内容必须符合.aspx文件的要求。
语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P39_86343.jpg?sign=1739232943-rluBd1RSWZ9qdjczUEGLr5vJlE4QaHkS-0-85143d23b248e0048cd6727a1dac1191)
- ☑ file:文件名是相对于包含带有#include指令的文件目录的物理路径,此路径可以是相对的。
- ☑ virtual:文件名是网站中虚拟目录的虚拟路径,此路径可以是相对的。
注意
使用file属性时包含的文件可以位于同一目录或子目录中,但该文件不能位于带有#include指令的文件的上级目录中。由于文件的物理路径可能会更改,因此建议采用virtual属性。
例如,使用服务器端包含指令语法调用将在ASP.NET页上创建页眉的文件,这里使用的是相对路径,代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P39_86346.jpg?sign=1739232943-9qCGPRvTe4QzmuNzlI6mmzlttaPyCB32-0-b4377f1518403f359a2511182165817e)
注意
赋予file或virtual属性的值必须用引号("")括起来。
1.4.5 HTML服务器控件语法
默认情况下,ASP.NET文件中的HTML元素作为文本进行处理,页面开发人员无法在服务器端访问文件中的HTML元素。要使这些元素可以被服务器端访问,必须将HTML元素作为服务器控件进行分析和处理,这可以通过为HTML元素添加runat="server"属性来完成。服务器端通过HTML元素的id属性引用该控件。
语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P39_86349.jpg?sign=1739232943-pPmssjz9NqO5mA67FfLhUeen2uuhcqW0-0-4e89a43a1df4cd6d1b89986c2a328871)
例如,使用HTML服务器端控件创建一个简单的Web应用程序,单击Red按钮将Web页的背景改为红色,程序代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P39_10608.jpg?sign=1739232943-UhJZLL82K3H4lHf73Qiodna76qBD3GEj-0-17393063052c47deee21db1ddd506030)
运行结果如图1.41所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P40_13644.jpg?sign=1739232943-CPxzBratE8ZIG39fEzzd18x8eVWv2KiF-0-3b2a6deffdc03dfc3fd3f293ab055b87)
图1.41 HTML服务器控件举例
注意
HTML服务器控件必须位于具有runat="server"属性的<form>标记中。
1.4.6 ASP.NET服务器控件语法
ASP.NET服务器控件比HTML服务器控件具有更多的内置功能。Web服务器控件不仅包括窗体控件(如按钮和文本框),而且还包括特殊用途的控件(如日历、菜单和树视图控件)。Web服务器控件比HTML服务器控件更抽象,因为其对象模型不一定反映HTML语法。
语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P40_86354.jpg?sign=1739232943-ff9KxgPtMoBNPRL0NMrpG0emvX9twvbY-0-b38810f1494dd9d557c17fe64abcf01a)
例如,使用服务器端控件语法添加控件,程序代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P40_86355.jpg?sign=1739232943-X45nMlZHKPFtw0B6pIeBYpEQ4l3WoiCV-0-1bd57853b3a3fa8b58656b4372fda1fd)
注意
在以上代码中,必须将<script>标记内的language属性设置为C#,否则<script>标记内不支持使用C#代码。
1.4.7 代码块语法
代码块语法是定义网页呈现时所执行的内嵌代码。定义内嵌代码的语法标记元素为:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P41_86357.jpg?sign=1739232943-eChYkCBS5lOsaKliXrfiveYjlDImnynm-0-d04d79998ce5a0e9a9237b1ebe42b7ad)
例如,使用代码块语法,根据系统时间显示“上午好!”或“下午好!”,具体代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P41_86358.jpg?sign=1739232943-nhNfvtT3Ij8DJZjlMEQIBn3FNzwCgOOh-0-3c9b50fdff0e0bb3362bbd5b09be1d26)
说明
在以上代码中,DateTime对象用于表示时间上的一刻,通常以日期和当天的时间表示。其包含在System命名空间中。
1.4.8 表达式语法
定义内嵌表达式使用的语法标记元素为:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P41_86363.jpg?sign=1739232943-f9NRj0XIn3EpzuvE1wiiV2Mo5XZWTTE2-0-68a9f0198f0a62c66cd3dd63fd66424d)
例如,在网页上显示字体大小不同的文本,代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P41_86364.jpg?sign=1739232943-6rvl2mAiW1NUbFyo5QE2Vy2C92szidgG-0-c45e567fcdeac8884ff6f6865f5cefea)
说明
在以上代码中,使用for循环语句执行6次循环内容。