ASP.NET学习手记- -

出处:http://www.3gcolor.com/res/index.asp

从今天开始系统学习ASP.NET,以杨浩翻译的Chris Ullman、John Kauffman(美)等著的ASP.NET 1.1 入门经典——Visual C#.NET 2003编程篇为参考。

第一章 ASP.NET 入门

ASP.NET是一项功能强大、非常灵活的新技术,它用于编写动态Web页面。ASP.NET是微软公司的ASP和.NET Framework这两项核心技术的结合。需要说明的是,用户不需要对ASP有任何了解就可以学习ASP.NET。学习ASP.NET只需要有一些创建Web页面的HTML知识就可以了。实际上,熟悉ASP在某些方面可能还是一种缺点,因为可能需要忘记以前的一些规则。晕……。
ASP.NET允许用基于.NET Framework的任何编程语言(例如VB.NET、JScript.NET或C#等)创建Web应用程序。

1.1 什么是静态Web页面
静态Web页面是指页面的内容和外观总是保持不变——它并不考虑谁在访问页面、何时访问页面、如何进入页面及其他因素。

1.2 静态Web页面的工作原理
①Web作者编写由纯HTML代码组成的Web页面,并将其以.htm文件保存到Web服务器上。
②客户在浏览器中输入页面请求(URL),该请求从浏览器传送到Web服务器。
③Web服务器确定.htm页面的位置,并将它转换成HTML流。
④Web服务器将HTML流通过网络传回到浏览器。
⑤浏览器处理HTML流并显示该页面。

1.2.1 静态Web页面的局限性
HTML页面不具备定制Web页面的功能,每一个Web页面对每个用户都是一样的。HTML也没有安全性,任何人都可以浏览HTML代码;没有办法阻止其他人复制自己的HTML代码,并在他们的页面中使用这些代码。静态页面的优点是执行速度非常快。

1.2.2 什么是Web服务器
Web服务器是一个软件,用于管理Web页面,并使这些页面通过本地网络或Internet供客户浏览器使用。有许多可能的Web服务器,最常用的是Apache、IIS和Iplanet的Enterprise服务器。下面只介绍IIS。
IIS:因特网信息服务系统,与Windows 2000、Windows XP Professional和Windows 2003 Server捆绑在一起。它们捆绑的分别是IIS 5.0、5.1和6.0,不同版本之间的差别不大,这里将它们按同样的产品对待。

1.3 动态Web页面的工作原理①Web作者编写一套用于创建HTML的指令,并将这些指令保存到文件中。
②客户在浏览器中输入页面请求(URL),该请求从浏览器传送到Web服务器。
③Web服务器确定指令文件的位置。
④Web服务器根据指令创建HTML流。
⑤Web服务器将新创建的HTML流通过网络传回到浏览器。
⑥浏览器处理HTML流并显示该页面。

1.4 什么是ASP.NET
ASP.NET是一项功能强大的、非常灵活的服务器端技术,用于创建动态Web页面。

1.4.1 ASP.NET与ASP的区别
ASP只能使用脚本语言,主要是javascript或VBScript。脚本语言就象是编程语言的简明版本或低等级脚本,因为它们的功能不那么强大,也不支持编程语言的全部功能。另外,给Web页面添加ASP代码的方法与在客户端脚本中添加代码的方法相同,而这样做会导致诸如代码杂乱、功能有限等问题。
ASP.NET则不会出现此类问题,它允许使用有很大选择余地的、功能完善的编程语言,也允许充分利用有巨大潜力的.NET Framework。ASP.NET可以帮助用户利用由.NET Framework支持的任何一种编程语言创建更快、更可靠的动态Web页面。.NET Framework支持的语言有VB.NET、JScript.NET(一种javascript的新版本)以及C#。此外,第三方开发人员有望创建出运行于ASP.NET的Perl、Python和其他许多软件的版本。
ASP.NET带有大量的控件,这些控件无需进行任何ASP.NET编码就可以用于页面。
ASP.NET已经与HTML分离开。

1.4.2 使用C#和ASP.NET
ASP.NET被描述为一门技术而不是一种语言,这是非常重要的!ASP.NET页面可以用许多语言生成,这里我们选择C#,因为它对初学者来说是最为简单的,而且它可以完成其他.NET语言能够完成的大多数功能。此外,它随ASP.NET免费提供,因此,当安装ASP.NET时,也就得到了C#。

1.4.3 ASP、ASP.NET以及C#之间的关系
ASP:用于创建动态Web页面的服务器端技术,它只允许使用脚本语言。
ASP.NET:用于创建动态Web页面的服务器端技术,它只允许使用由.NET支持的任何一种功能完善的编程语言。
C#:一种编程语言,用于在ASP.NET中编写代码。

1.5 安装
①安装IIS。
②安装MDAC(微软数据访问组件)2.7版或更新的版本。
它是一套组件,允许利用ASP.NET与数据库通信。
③安装ASP.NET和.NET Framework。
ASP.NET是.NET Framework的一个集成组件。.NET 1.1 Framework附带的是ASP.NET 1.1。
④安装Microsoft Visual Studio .NET 2003。
(该书特别讨厌的是以Web Matrix做为Web服务器。)

第二章 ASP.NET页面的剖析

2.1 什么是.NET
.NET是一个内涵很广的术语,它包含了微软公司对未来的核心战略、规划与洞察力。此战略的核心就是.NET Framework,该构架提供了全面支持.NET的核心技术。.NET Framework本身由若干组件组成:
MSIL——MS中间语言,.NET的通用语言。程序员可以使用任何.NET语言编写代码,包括VB、C#、JScript和其他大约20种语言。这些代码都会编译为MSIL。
CLR——公共语言运行时,负责在计算机上执行MSIL、与Windows和IIS交互时所涉及的全部实质性任务。
.NET Framework类库——包含大量重要功能的代码库。用户可以非常方便地将这些库调用到应用程序中,使复杂任务的程序代码更为简洁。
.NET语言——是符合一些特殊要求(由公共语言规范定义)的编程语言,能够编译成MSIL。
ASP.NET——该模块扩展了IIS,使之能通过.NET Framework创建Web页面。
Web服务——可通过Web访问的组件,并可以在应用程序中使用。它们可以提供任何功能,例如新闻标题、天气预报、股票走势等。

2.1.1 编译(从用户代码到机器代码)
将用户代码(用高级语言编写的程序代码)转换为机器代码(机器可以识别的二进制代码)的过程称为编译。编译过程包括将本机环境信息写入经编译的程序代码这一过程,因此编译后的程序代码可以高效地利用计算机的所有可用资源。
预编译代码:在使用前时行编译的代码。对于这种代码,由于编译器有机会花时间分析全部的代码和要运行它的机器,因此代码能够以很快的速度执行。不过,由于预编译的代码是针对某一计算机的,因此除非仍在该计算机上运行编译后的代码,否则需要将另一台计算机设成与第一台计算机相同的系统与资源。
解释代码:边执行边编译的代码。这种代码执行较慢,因为需要为每个请求编译代码,且系统没有机会全面优化所编译的代码。不过,其优点是解释过程可以调整,以适应运行代码的机器。
所以,开发人员在选择语言时将面临一个两难的局面。他们可以选择较慢的解释代码以适应运行代码的机器,也可以选择较快的预编译代码但移植性较差。

2.1.2 中间语言介绍
.NET在编译时采用两步法来解决这个问题。.NET编译器将程序代码编译成MSIL的特殊格式,编译过程包括了一些代码,但并没有针对某台机器进行优化。因此,MSIL具有一般的优化性能,并可以移植到任何.NET服务器上。
当用户执行编译为MSIL的页面时,将其传给公共语言运行时CLR,CLR使用JIT(Just-In-Time)编译器将代码编译成真正的机器码,并对程序进行最后的、且与机器相匹配的优化,以使程序能在其所在的计算机上以尽可能快的速度运行。
因此,MSIL和CLR组合使用,具有两种编译代码的优点:预编译代码的结构优化和解释代码的可移植性。
更为重要的是,MSIL本身与机器无关,因此,可以在装有CLR的任一计算机上运行。

2.1.3 对象
对象是自包含的功能单位,就像一个小型程序,其中包含可以完成特定任务的数据或代码。使用预先编写好的对象有如下优势:
① 避免为多次使用而重复编写代码
② 对象允许购买超出我们开发能力范围或资源的功能
③ .NET对象是标准化的,其他程序员可以方便的发现和使用对象的功能
④ 对象可以用任何与.NET兼容的语言编写。
模型对象称为类定义。

2.1.4 .NET的基类
.NET Framework的一个非常重要的特性是它具有基类库,它可以使程序员避免那些工作量大得令人头疼、且枯燥无味的编码工作。基类库中包含大量微软已经编写好的代码,程序员可以将它们包括到任一程序中。要利用这些代码,只需要知道如何使用对象即可,不需要理解代码的内部工作原理。
命名空间:.NET用命名空间将功能相似的类组合到一起。为了使用包含在命名空间中的类,需要导入这些命名空间。

2.2 ASP.NET的工作原理
ASP.NET文件以.aspx扩展名保存。
当安装.NET时,本地的IIS Web服务器会自动配置以查找扩展名为.aspx的文件,且用ASP.NET模块(名为aspnet_isapi.dll的文件)处理这些文件。

在Web页面中插入ASP.NET代码有3种方式:
1:使用内联代码:使用<% %>作为界定符,在ASP中经常使用,在ASP.NET中不推荐使用。
2:使用<script runat="server">脚本代码
一个应用程序(多个页面)的各个部分可以使用多种语言编写,但不能在一个页面上混合使用多种语言。
C#代码可以位于ASPX页面的任何地方。
每个代码块都必须位于一个函数或方法声明中。
方法在其他代码触发它时执行。它也许会触发一次,也许触发多次,也许永远不触发。
如何在第一次建立页面时,让某类触发器自动运行代码?换言之,无论事件是否发生,都执行某些代码?在创建页面时,ASP.NET模块会执行位于一个特定方法即Page_Load()中的所有代码。
3:使用服务器控件

2.3 第一个例子:hello!The World!
1、打开 Microsoft Visual Studio .NET 2003。
2、执行:文件/添加新项,弹出对话框,在右侧模板中选择Web窗体,在下面输入文件名称,单击打开按钮,进入设计窗口。
3、将鼠标移到窗体左侧的工具箱,选择Label工具。
4、在窗口中添加一个Label服务器控件。在右侧的属性窗口中,输入其ID:lblMsg。
5、双击lblMsg控件,打开Hello.aspx.cs文件,在Page_Load()方法中输入代码:lblMsg.Text="Hello!The World!";

图片如下:

6、在右侧的解决方案资源管理器窗口中,右击hello.aspx文件,选择设为起始页。

图片如下:

7、按下F5,启动。可以看到在浏览器窗口中显示出了信息:Hello!The World!

补充
关于窗体:
在ASP.NET中,引入了窗体的概念,想来想去,也不知道它的定义是什么。有N种说法。
通过Web页面向Web服务器传送信息的方法称为窗体。
用于从浏览器向服务器传送数据。
位于<form runat="server"></form>标记中的代码;
我还是干脆将其理解为用于向Web服务器传送数据的Web表单页面吧。

Web表单页面的构成:
Web表单页面是由两个构件组成的。
①用户界面:使用ASP.NET服务器控件组装用户界面的动态部分,ASP.NET控件使您能显示智能HTML表单以及提供数据库数据的交互式网格。
②应用逻辑:用于处理控件和页面事件。包括点击按钮时执行的代码,或者获取在控件中显示的数据库数据的代码。

充分体现出了界面与后台分开!

命名空间:
.NET框架类库包含了大量用于创建ASP.NET页面的类(三千多个),这些类由命名空间组成层次结构。
命名空间是类的逻辑分组,它组织成一个层次结构——逻辑树。这个树的根是System。
在ASP.NET页面中,可以默认的使用某些命名空间中包含的类,称做标准的ASP.NET命名空间。对于其他命名空间,则必须显式地导入。这些默认的命名空间包含ASP.NET应用程序中最常用的类,如下所示:
System
System.Collections
System.Collections.Specialized
System.Configuration
System.Text
System.Text.RegularExpressions
System.Web
System.Web.Caching
System.Web.Security
System.Web.SessionState
System.Web.UI
System.Web.UI.HTMLControls
System.Web.UI.WebControls

第三章 服务器控件和变量

3.1 窗体

用于向Web服务器传送数据的Web表单页面。创建 Web 窗体页时,您可以使用以下控件类型:

① HTML 服务器控件
HTML 服务器控件是 HTML 元素,这些元素包含使其自身在服务器上可见并可编程的属性。默认情况下,服务器无法使用 Web 窗体页上的 HTML 元素;这些元素被视为传递给浏览器的不透明文本。但是,通过将 HTML 元素转换为 HTML 服务器控件,可将其公开为可在服务器上编程的元素。
页上的任意 HTML 元素都可以转换为 HTML 服务器控件。转换是一个只涉及几个属性的简单过程。作为最低要求,通过添加 RUNAT="SERVER" 属性,HTML 元素即可转换为控件。这将在分析期间提醒 ASP.NET 页框架,它应该创建该控件实例,以便在服务器端页处理期间使用。如果要在代码中作为成员引用该控件,则还应当为控件分配 ID 属性。
例如:
<a href="http://www.3gcolor.com">3G色网</a>
这是一个HTML元素,如果改为下面的形式,那么就将它转换成了HTML服务器控件了:
<a href="http://www.3gcolor.com" id="lnk3GColor" runat="server"">3G色网</a>

② Web 服务器控件
这些控件比 HTML 服务器控件具有更多内置功能。Web 服务器控件不只包括窗体类型的控件,例如按钮和文本框;而且还包括特殊用途的控件,例如日历。

③ 验证控件
包含逻辑以允许测试用户输入的控件。将一个验证控件附加到输入控件,测试用户对该输入控件输入的内容。验证控件可用于检查必填字段,对照字符的特定值或模式进行测试,验证某个值是否在限定范围之内以及其他目的。

④ 用户控件
用户自己创建的控件。

3.2 Web窗体页中的<form>标记

<form id="Form1" runat="server"></form>
runat="server"属性告诉Web服务器应该处理窗体本身,而不是只将它传送到浏览器。注意,这里没有提供method和action属性。
在默认情况下,标准的HTML表单标记的mehtod属性的值是GET,在提交具有method="GET"属性的表单时,表单数据做为查询字符串变量提交。但是无法在查询字符串是提交大量表单数据,若要提交大量表单数据,需要使用POST方法,将method的属性值设为POST。
ASP.NET的Web窗体页面中,表单数据默认为以POST方式传送,并自动的发送回相同的页面,也就是说提交给自己。

3.3 使用服务器控件的优势

1、直观的对象模型
通常,Web服务器忽略页面中的HTML标记。从Web服务器的角度看,这些标记是发送到Web浏览器的无意义的字符串。由浏览器去分析,不是偶的任务!但是,将HTML标记转换为ASP.NET服务器控件之后,对于Web服务器来说,这些标记不再是无意义的字符串了。标记变成了服务器端对象,它具有可以在程序中操作的属性、方法、集合和事件。
将标准的HTML标记转换为服务器控件,为编程提供了许多可能,可以通过服务器操作对象的属性,可以编写应用逻辑来读取或修改对象的属性,甚至可以通过程序向页面中添加新对象或者隐藏现有的对象。

2、视图状态
先来做个实验吧。新建一个窗体,在窗体上添加一个Web服务器控件TextBox和两个HTML文本框,将其中的一个作为服务器控件运行(也就是说将其转换为HTML服务器控件),再添加三个Web服务器控件Label说明一下,最后再添加一个Web服务器控件Button,如下图所示。

图片如下:


按下F5运行它,在浏览器窗口中输入数据。

图片如下:

提交表单,结果如下:

图片如下:

可以看到我们刚才在服务器控件中输入的数据保留下来了,而HTML文本框中的数据丢失了。这种用服务器控件创建的表单是智能的。微软将这种自动保留数据的特性称作视图状态(View State)。ASP.NET控件自动的保留视图状态。
视图状态不只应用于与表单元素对应的ASP.NET控件;所有标准的ASP.NET控件都会保留它们的视图状态。注意:只有表单被发送回本身时,才保留视图状态。
视图状态有什么作用呢?以前,用户填写表单提交后,如果有需要必填的数据用户没有添,或者用户所填的数据不符合要求,用户就需要重新填写所有的数据。有了视图状态,用户所做的只是修改原来的数据。视图状态使得表单对用户更友好了。

3、将代码与内容分离
ASP.NET控件提供了分离代码(应用逻辑)和内容(页面的设计元素)的简洁方式。设计人员可以将ASP.NET控件放入页面,而不用为应用逻辑担心。

4、浏览器兼容性
ASP.NET页面在服务器上执行,而不是在浏览器上。当浏览器请求ASP.NET页面时,会获得标准的HTML页面。这意味着ASP.NET页面可以与任何浏览器兼容。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页