分享
 
 
 

ASP.NET:了解WEB窗体的代码模型

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

一个ASP.NET页面由两部分组成:一是使用静态文本和服务器控件的用户界面定义,二是用户界面行为和服务器端代码形式的Web应用程序逻辑的实现。

ASP.NET提供了全新的代码模型,使得网页开发者和开发工具能够更清晰、更容易地把代码与表示分开。对比ASP来说,这个特征是一个重要的改进,ASP需要代码遍布在整个页面的静态内容之中。ASP.NET代码模型使得开发和设计团队中的分工更加容易,并增加了代码和内容的可读性和可维护性。

这个全新的代码模型通常使用两种形式之一。第一种形式仅仅是在.aspx页面文件内的< script runat=”server”></script>脚本代码块中嵌入代码,这种形式被称为行内代码(inline code), ASP.NET Web Matrix、DreamweaverMX等软件采用的就是这种代码编写模型。第二种形式包含实现从Page中派生的类,在独立的文件中保存代码并且通过Page指令把它与.aspx文件联系起来。这种形式一般称为代码分离(code-behind),有时也成为代码隐藏技术,Visual Studio.NET采用是这种模型。无论采用那种编程模型,性能是一样的,只是不同的编程工具,又不同的编写方法和使用习惯,重要的一点就是在使用ASP.NET的类之前,必须引入类所在的命名空间。

同时Web窗体的返回处理过程是基于事件驱动型的,提交页面为自身,因此在每个Web窗体的控件布局代码必须放在<body><form runat=server></from></body>HTML代码块中的。

在下面两节中,我们通过实例来演示行内代码模型和在Visual Studio.NET2003实现的分离模型编。

4.2.1 利用行内代码模型编写Web应用程序

行内代码编程模型更近似与ASP的升级,HTML代码和应用程序的逻辑代码一同保存在.aspx页面文件中,在第一次被访问时编译成Page基类,以后每次访问都是直接有该Page类生成Web页面。在第一章的第5节中,我们引用了一个显示“Hello,ASP.NET!”的实例,就是采用的行内代码编程模型编写的。下面时NewFile.aspx的全部代码:

<%@ Page Language="VB" %>

<!-- 逻辑代码部分开始 ->

<script runat="server">

' Insert page code here

sub page_load(sender as object ,e as eventargs)

Response.Write("Hello, ASP.NET!")

End Sub

</script>

<!-- 逻辑代码部分结束->

<html>

<head>

</head>

<body>

<FORM runat="server">

<!-- Insert content here -->

</FORM>

</BODY>

</HTML>

通过浏览器浏览效果如图4.3所示:

图4.3 NewFile.aspx运行结果

行内代码的好处较之与Visual Studio.NET来说,代码比较简洁,同时,一个Web应用程序中的每个ASP.NET页面可以采用不同的语言编写,比如NewFile.aspx可以采用VB.NET ,NewFile2.aspx可以采用C#,NewFile3.aspx可以采用J#。但是,每一个ASP.NET页面必须只使用一种语言。

4.2.2 利用代码隐藏技术编写Web应用程序

Visual Studio.NET就是典型的利用代码隐藏技术编写Web应用程序的工具软件, VS.NET为Web应用程序中的每个Web窗体提供了三个不同的窗口:

(1)设计窗口:采用所见即所得的方式,可以用鼠标直接干预控件或是其他可视效果的位置。窗口的切换按钮图标是 ;

(2)HTML代码窗口:可以查看Web窗体的HTML代码,并且可以修改、编写。编写HTML代码的时候,Visual Studio.NET系统提供智能提示的功能。窗口切换按钮图标;

(3)逻辑代码窗口:即是代码隐藏技术中逻辑代码窗口,每个Web窗体都有一个对应的逻辑代码文件,有VS.NET自动把Web窗体的逻辑代码源引用到.aspx页面文件中。每个逻辑代码文件的名称是在对应的ASP.NET页面文件名称后再加后缀名.vb(C#语言编写的源文件加后缀名.cs)。如,WebForm1.aspx的逻辑代码文件为WebForm1.aspx.vb。如果要进入Web窗体的逻辑代码,只需要在设计窗口中双击Web窗体界面就进入了逻辑代码窗口。

我们用VS.NET2003打开在第三章中建好的Web项目――MyFirst应用程序,打开后,系统默认进入了WebForm1.aspx的设计窗口,如图4.4所示。

图4.4 WebForm1.aspx的设计窗口

单击按钮图标 ,就进入了WebForm1.aspx的HTML代码窗口,如图4.5所示。

图4.5 WebForm1.aspx的HTML代码窗口

下面是WebForm1.aspx的所有HTML代码:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="MyFirst.WebForm1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<title>WebForm1</title>

<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">

<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">

<FONT face="宋体"></FONT>

</form>

</body>

</HTML>

在<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="MyFirst.WebForm1"%>中,声明了Page类使用的编程语言,Codebehind="WebForm1.aspx.vb"指明该页面的逻辑代码保存在WebForm1.aspx.vb文件中。

在WebForm1.aspx的设计窗口中,我们对窗体界面双击,就进入了WebForm1.aspx的逻辑代码窗口,即:WebForm1.aspx.vb。WebForm1.aspx.vb是系统自动生成的,在它的代码中包括对WebForm1.aspx中引用控件的声明和窗体设计器自动生成的代码。在WebForm1.aspx.vb窗口中编写代码时,系统提供了智能填充的功能,例如如果你不知道使用类的具体名字而只知道类所在的命名空间,你只要敲出命名空间和“.”,智能填充就会给出该命名空间中所有类名称,这对于初学者很有帮助,对提高别称效率也很有帮助。WebForm1.aspx.vb的窗口如图4.6所示。

图4.6 WebForm1.aspx的逻辑代码窗口

在WebForm1.aspx.vb中,包含了Web窗体编译时必须的一些函数。下面是WebForm1.aspx.vb文件的全部代码:

Public Class WebForm1

Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

'注意: 以下占位符声明是 Web 窗体设计器所必需的。

'不要删除或移动它。

Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: 此方法调用是 Web 窗体设计器所必需的

'不要使用代码编辑器修改它。

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'在此处放置初始化页的用户代码

End Sub

End Class

上面代码中的注释部分也是系统自动添加的,并且系统也自动生成了WebForm1.aspx窗体的Page_Load事件过程。

我们在这个事件过程中添加代码:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'在此处放置初始化页的用户代码

'下面是要显示的内容

Response.Write("I Love China! I Love The Great Wall!")

End Sub

然后按F5,Visual Studio.NET会自动编译整个MyFirst应用程序,然后调用IE了浏览器打开WebForm1.aspx(本实例中WebForm1.aspx为默认启动窗体),也可以在WebForm1.aspx的设计窗体中右击鼠标,在弹出菜单中选择【在浏览器中查看】,就可以直接在Visual Studio.NET的集成环境中查看WebForm1.aspx编译后的运行效果,如图4.7所示,这个方法适合预览非默认启动窗体。当然,可以编译整个Web应用程序,然后在IE浏览器中直接输入地址也可以预览运行效果。

图4.7 非默认启动窗体的预览方式

无论采用那一种方式预览Web窗体,都是必须经过编译的。Visual Studio.NET会把编译后生成的Page基类存放于应用程序根目录下的bin文件夹中,以后每次访问直接调用该基类。本实例中生成的类为MyFirst.dll。我们编译后通过浏览器查看WebForm1.aspx,结果如图4.8所示。

图 4.8 WebForm1.aspx的运行结果

采用代码隐藏技术编写的Web应用程序逻辑上比较明朗,一方面减少了.aspx页面的文件长度,另一方面,Web应用程序正式发布到服务器后,逻辑代码文件经过编译生成基类文件(DLL文件)后,就可以删除掉,从而做到对源代码的保护。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有