ASP.NET程序的开发非常复杂,开发的过程类似于Windows窗体应用程序,本章将向读者介绍ASP.NET应用程序开发中的相关语法知识。
ASPX页面是以.aspx为扩展名的文件,页面由代码和标记组成。这些ASPX页面在服务器上动态地编译和被执行,为提出请求的客户端浏览器(如Internet Explorer)或设备生成显示内容。ASPX页面可以被部署在IIS虚拟目录树之下,也可以是其他支持ASP.NET的Web服务器。
当浏览器客户端请求ASPX页面资源时,ASP.NET运行时对目标文件进行分析,并把它编译成.NET框架类,这个类就可以用于动态地处理请求。ASPX页面只在第一次被访问时才编译,编译形成的类型实例以后供多个请求重复使用。
最简单的产生ASPX页面的办法是将一个已有的HTML文件后缀名更改为.aspx,也可以在Visual Studio 2005中编写。下面介绍如何在Visual Studio 2005中生成ASPX页面。
创建一个网站,演示如何生成ASPX页面。
(1)创建一个名为FirstASPX的网站,如图12-6所示。
图12-6 创建网站
(2)Visual Studio 2005已经为用户创建了一个默认的default.aspx页面,修改default.aspx文件的内容如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASPX页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
ASPX页面
</div>
</form>
</body>
</html>
按Ctrl+F5组合键运行程序,运行结果如图12-7所示。
图12-7 运行结果
代码中给出了ASPX页面的标题和简单的文本。可以从结果中看到,标题更改为ASPX页,网页的内容为ASPX页面。
上一小节的实例中没有体现任何动态的特性,本小节介绍<% %>的使用方法。使用<% %>可以嵌入代码。
创建一个网站,演示如何向ASPX页面中嵌入代码。
(1)创建一个名为CodeIn的网站。
(2)Visual Studio 2005已经为用户创建了一个默认的default.aspx页面,修改default.aspx文件的内容如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>嵌入代码</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%
for (int i = 0; i < 10; i++)
{
%>
<%= "第" + i.ToString() + " 遍"%>
<%= "<br>"%>
<%
}
%>
</div>
</form>
</body>
</html>
按Ctrl+F5组合键运行程序,运行结果如图12-8所示。
图12-8 运行结果
代码中使用<% %>嵌入了一个简单的for循环,该循环的语法和Windows控制台程序以及Windows窗体应用程序中相同。<%= %>是一种简便的向网页输出的书写格式,功能类似于Console.WriteLine。
<Script>...</Script>是一种代码声明块,定义嵌入ASP.NET应用程序文件内使用runat="server"属性标记的script块中的服务器代码。
创建一个网站,演示如何向ASPX页面中嵌入代码。
(1)创建一个名为ScriptIn的网站。
(2)Visual Studio 2005已经为用户创建了一个默认的default.aspx页面,修改default.aspx文件的内容如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ScriptIn</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script language="C#" runat="server">
void EnterBtn_Click(Object Src, EventArgs E)
{
Message.Text = "你好" + Name.Text + ", 这是嵌入代码!";
}
</script>
输入你的名字:
<asp:TextBox ID="Name" runat="server" />
<asp:Button ID="Button1" Text="确 定" _disibledevent="EnterBtn_Click"
runat="server" />
<p>
<asp:Label ID="Message" runat="server" />
</div>
</form>
</body>
</html>
按Ctrl+F5组合键运行程序,运行结果如图12-9所示。
图12-9 运行结果
代码中使用<Script>...</Script>嵌入了一个简单事件处理程序,执行“确定”按钮被按下后的处理方法。可以看到,代码的方式基本类似于Windows窗体应用程序中的事件处理程序,使用非常方便。
上一小节中已经使用了3个Server控件,其代码部分如下:
<asp:TextBox ID="Name" runat="server" />
<asp:Button ID="Button1"Text="确定"OnClick="EnterBtn_Click" runat="server"/>
<p>
<asp:Label ID="Message" runat="server" />
分别是TextBox控件、Button控件和Label控件。从名称上可以看出,ASP.NET中一些常用控件的名称和Windows窗体应用程序中名称相同,同样其功能也类似。这些控件不仅可以通过代码的形式写出,也可以通过类似窗体设计器的页面设计器进行拖放式设计。Visual Studio 2005提供的控件工具箱如图12-10所示。可以使用拖放的方式进行设计,如图12-11所示。
图12-10 运行结果 图12-11 运行结果
服务器端注释允许开发人员在ASP.NET应用程序文件的任何部分(除了<script>代码块内部)嵌入代码注释。服务器端注释元素的开始标记和结束标记之间的任何内容,无论是ASP.NET代码还是文本,都不会在服务器上进行处理或呈现在结果页上。
ASP.NET服务器端注释块与传统的语言特定注释块具有相同的用法(包括文档和测试)。可以使用服务器端注释来描述文件的标记部分,或注释掉页面中声明的一个或多个服务器控件。这些注释可用于大多数类型的ASP.NET应用程序文件,包括网页、用户控件、Global.asax文件、母版页和外观文件
服务器端注释用于页面的主体,但不在服务器端代码块中使用。当在代码声明块(包含在<script runat="server"></script>标记中的代码)或代码呈现块(包含在<% %>标记中的代码)中使用特定语言时,应使用正用于编码的语言的注释语法。下面是一些注意事项。
· 如果在<% %>块中使用服务器端注释块,则会出现编译错误。
· 开始和结束注释标记可以出现在同一行代码中,也可以由许多被注释掉的行隔开。
· 服务器端注释块不能被嵌套。
<%@ Page...%>用于定义ASP.NET页分析器和编译器使用的页特定(.aspx文件)属性。
前面实例中的代码都包括该属性设置,如下的代码就是一段典型的设置:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>
其中说明了使用的语言为“C#”,代码文件为“Default.aspx.cs”等。该属性设置的参数非常多,有兴趣的读者应查阅相关的MSDN资料。
<%@ Import %>用于将命名空间显式导入到ASP.NET应用程序文件(如网页、用户控件、母版页或Global.asax文件)中,同时使导入的命名空间的所有类和接口可用于文件。导入的命名空间可以是.NET Framework类库或用户定义的命名空间的一部分。
读者可以将其理解为ASP.NET中的using语句。