webdn
 
  首页     免费截图     VIP会员区     广告Banner     技术文档     网站模板  
网站截图,网站每日新 !
虚拟主机 域名注册

首页 >> WebDN 文档 >> 网络编程 >> ASP.net教程>> 第36页 >> 实例演示行内代码模型和在.NET2003实现分离模型编写

 

实例演示行内代码模型和在.NET2003实现分离模型编写

【摘 要】 行内代码编程模型更近似与ASP的升级,HTML代码和应用程序的逻辑代码一同保存在.aspx页面文件中,在第一次被访问时编译成Page基类,以后每次访问都是直接有该Page类生成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所示:

ASP.NET:了解WEB窗体的代码模型
图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所示。

ASP.NET:了解WEB窗体的代码模型
图4.4 WebForm1.aspx的设计窗口

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

ASP.NET:了解WEB窗体的代码模型
图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所示。

ASP.NET:了解WEB窗体的代码模型
图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浏览器中直接输入地址也可以预览运行效果。

ASP.NET:了解WEB窗体的代码模型
图4.7 非默认启动窗体的预览方式

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

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

图 4.8 WebForm1.aspx的运行结果

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



电话咨询:010-60520722 QQ咨询:3792656   |   583696287   |   66733350 关于WebDN  |  站点地图  |  联系我们  |  支付方式  |  友情链接
© 2004-2008 WebDN.com 版权所有. 沪ICP备05040479号