用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 程序开发教程 > ASP.net教程 > Asp.Net开发技巧 > 文章正文
ASP.NET的工作原理
iTbulo.COM 2005-11-4 未知()
 ASP.NET的工作原理

在多数场合下,可以将ASP.NET页面简单地看成一般的HTML页面,页面包含标记有特殊处理方式的一些代码段。当安装.NET时,本地的IIS Web服务器自动配置成查找扩展名为.aspx的文件,且用ASP.NET模块(名为aspnet_isapi.dll的文件)处理这些文件。

从技术上讲,ASP.NET模块分析ASPX文件的内容,并将文件内容分解成单独的命令以建立代码的整体结构。完成此工作后,ASP.NET模块将各命令放置到预定义的类定义中(不需要放在一起,也不需要按编写顺序放置)。然后使用这个类定义一个特殊的ASP.NET对象Page。该对象要完成的任务之一就是生成HTML流,这些HTML流可以返回到IIS,再从IIS返回到客户。简言之,在用户请求IIS服务器提供一个页面时,IIS服务器就根据页面上的文本、HTML和代码(这对我们来说是最重要的)建立该页面。

注意:

本书将介绍此过程的各方面细节,第7章将详细介绍Page对象,讨论该对象所能完成的一些工作。

现在我们要把重点放在页面的生成和运行。第一步是学习如何创建页面,并让Web服务器将它们识别为ASP.NET页面。

2.2.1  ASP.NET文件以.aspx扩展名保存

前一章已经将适当代码保存到扩展名为.aspx的文件,这定义了一个ASPX.NET页面。这个扩展名把页面标识为由ASP.NET模块来处理。没有它,IIS只是将页面传送给用户,但不执行代码。

虽然可以在.htm文件中使用<script>标识符,但在该标识符之间放置的任何内容均不会作为ASP.NET代码解释。这些内容会被送到客户端浏览器执行,但它们不可能工作,因为只有HTML和客户端脚本才能在浏览器上执行。

学生和初学者在使用Notepad时常常对扩展名有一个问题。他们会在扩展名的后面加上.txt,使文件名变成MyFile.aspx.txt。在Notepad的“保存”对话框中把文件类型设置为All Files,就可以避免这个问题。也可以在保存文件后在Windows资源管理器中修改文件扩展名。在使用Web Matrix时不会有这个问题,因为Web Matrix会使用正确的扩展名。

2.2.2  Web页面中插入ASP.NET代码

如果要将任一种服务器端代码(不仅是ASP.NET代码)插入到自己的Web页面源代码中,则需要对其进行标注,以使服务器能将它识别为服务器端代码,这样才能正确处理它们。在HTML页面中插入ASP.NET代码有3种方式:

内联代码块。

<script>标记。

服务器控件。

以前使用过ASP的开发人员很熟悉内联代码块(<% %>界定符),但在ASP.NET中这不是首选技术。后两种技术提供了更健壮、性能更好、更容易维护的代码。

1. <script>标记

HTML代码中区分ASP.NET代码和页面文本的最好方法是使用<script>,并将runat属性设成server当采用<script>标记时,脚本默认在浏览器(客户端)执行。如果要编写服务器端脚本,则必须使用双引号指定runat=server”。

我们知道,ASP.NET本身不是语言,而是创建动态页面的技术。它允许在页面上使用各种编程语言。在ASP.NET中编写代码的默认语言是VB.NET。用VB.NET定义页面,只要将Page指令包括在页面的顶部即可,如下所示:

<%@ Page language="VB" %>

为定义一段代码,可采用以下格式(注意VB的双引号)

<script language="VB" runat="server">

... Visual Basic.NET statements go here ...

</script>

由于<%@ Page language>标记已经将VB.NET确定为编程语言,因此上面代码中的language属性不是必不可少的,可以省略掉。但是language属性清晰地说明目前正在使用哪一种语言,使代码的维护更加简单。这样的代码段可以位于ASPX页面的任何地方,但本书把代码放在页面的顶部。代码行可以位于ASPX页面的任何地方,只要把它们放在<script>标记内即可;本书把代码放在页面的顶部,是因为这是ASP.NET Web Matrix的工作方式。

为使用其他语言定义页面,如使用C#,可以用下面的代码来实现:

<%@ Page language="C#" %>

<script language="C#" runat="server">

... C# declarations go here ...

</script>

在上面两个例子中,<script>元素内的所有代码必须是用指定的语言编写的。一个应用程序(多个页面)的各个部分可以用多种语言编写,但不能在一个页面上混合使用多种语言。

虽然可以在页面中放置代码,但这些代码不一定会执行。每个代码块都必须位于一个声明中,一般称为Sub过程。在其他代码触发Sub时,Sub就会执行。它也许会触发一次,也许触发多次,也许永远不触发。后面几章将详细解释这一内容。

于是,就出现了一个逻辑问题:如何在第一次建立页面时让某种类型的触发器自动运行代码?换言之,无论事件是否发生,都执行某些代码?在创建页面时,ASP.NET模块会执行位于一个特定Sub过程即Page_Load()中的所有代码,如下面的结构所示:

<script language="VB" runat="server">

  sub Page_Load(source As Object, e As EventArgs)

... Location for Visual Basic.NET code to be run when the page is started

  end sub

</script>

这段代码的作用是(在此不准备细述其功能)当加载页面时,标记为sub Page_Load的声明块被自动激活。当启动页面时希望运行的任何代码,均可直接放到该位置。

文章搜索
相关资讯
相关文章 相关下载
如何快速完成数据更新
问答:重装系统后数据丢失怎么办?
详解数据包
甲骨文数据库将发补丁堵34处漏洞
最全面的宝贵数据备份解决方案
焦点信息