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

本文详细介绍了ASP.NET的Web窗体代码模型,包括行内代码和代码隐藏(代码分离)两种形式。行内代码将HTML和逻辑代码混合在同一个.aspx文件中,适合简单的应用;代码隐藏则将逻辑代码放在单独的.cs或.vb文件中,提高了代码的可读性和维护性。Visual Studio.NET支持代码隐藏模型,提供设计、HTML和逻辑代码窗口,便于开发。通过实例展示了如何在这两种模型下编写Web应用程序。

一个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文件)后,就可以删除掉,从而做到对源代码的保护。   

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值