答案:
(苏红超 编译)
导读
代码绑定是ASP.NET提供的一个重要的新技术。本文将会为您展示如何利用代码绑定技术来实现Web页面表示层和商业逻辑代码的分离,并建议您使用代码绑定技术实现代码的可重用。在接下来的另外一篇文章当中,我们会给出另外的一种实现代码可重用的实现技术。
ASP.NET中的代码绑定技术
当你在建立自己的ASP.NET应用程序的时候使用代码绑定技术带来的一个主要的优点是:它可以让你很容易的将可见层(那些HTML代码和服务器端控件)同你的表现代码(这些代码有可能是VB,C#或者其他的任何.NET支持的语言)自由的分离开来。当你有一个多人的开发小组开发同一个项目的时候,这个优势就更加明显。某个人可能负责web页面的设计和编写,而另外的一个人可能是负责页面相关的具体程序的开发。因而通过将各自的工作范围分割的做法,可以轻松的实现双方不会在无意之间破坏对方的工作成果。当然,要做到页面能够正常的运行,各自之间的良好沟通也是必不可少的。
当我们使用代码绑定技术的时候,可视层的代码是存在于后缀为ASPX的文件当中。这是一个新的.NET扩展名,用来描述一个ASP文件。在以前的ASP中很难做到一个页面当中没有任何脚本程序只有HTML代码(当然如果你毫无意义这样作也是可以的)。然而现在代码绑定技术允许ASPX文件仅仅包含HTML代码和服务器端控件,并且允许开发者完全的使用面向对象方式来实现一个解决方案。通过一个分开的代码文件中访问这个ASPX文件的这样一种机制可以实现上面的设想。这些文件在浏览器第一次发出请求的时候被编译成单独的二进制文件,如下图所示:
代码绑定文件是一个独立的文件,可以使用任何.NET支持的语言编写。比如,使用Visual Basic .NET来编写这些文件,它的扩展名将会是“vb”。这个代码绑定的代码包含了所有的和表示层相关的事件、功能函数、方法等等。每一个ASPX文件只能通过一个代码绑定文件实现。
当然,通过一定的工作,代码绑定技术可以用在多种需要可重用代码的环境当中。每一个ASPX文件有他们自己的代码绑定文件,并且多个功能类似的ASPX文件可以共享一个公共的代码绑定文件。本文会展示如何实现你的ASPX文件的最基本代码绑定技术,并且会详细讨论代码绑定技术如何被应用于代码可重用方面。以后的文章当中,我们会陆续介绍.NET架构提供的其他也可以容易实现代码重用的技术,比如用户控件,编译的集合等等。 让我们来大致看一下一个例子,来看看如何实现代码绑定技术。为了简单起见,我们的例子会以一个简单的搜索页面作为开始。当我们一步步通过代码绑定技术建立我们的搜索页面之后,我们就会能够看到代码绑定技术是如何实现一个代码重用的ASPX文件。为了使得ASP.NET程序正常运行,你必须安装.NET架构Beta1。如果要使得本文提出的程序正常运行,您必须安装SQL Server2000。
一步步实现代码绑定技术
首先,我们需要建立一个.ASPX文件。在这个ASPX文件当中,我们需要使用@page指令来说明我们正在使用一个代码绑定的文件。为了做到这一点,我们需要设置两个属性:src以及inherits。Src属性指定了包含实际代码的文件,如果没有这个属性,则在属性inherits中指定的类会从编译时候传递的参数中寻找。Inherits属性指定在源文件中存在的类。这个类需要从Page类中派生。我们的具体例子如下:
<%@ Page Language="vb" AutoEventWireup="false" src="Search.VB" Inherits="Search"%>
接下来,我们需要添加适当的控件来建立我们的用户界面。既然我们的例子页面是一个简单的搜索页面,我们只需要加入很少的一部分控件就可以了。除了一些标签标记,我们需要增加一个搜索的文本框,一个提交搜索的按钮,以及一个DataGrid控件来显示数据库中的内容。下面是代码:
<%@ Page Language="vb" src="search.vb" inherits="Search" %>
<html>
<head>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
</head>
<body>
<form id="SearchMain" method="post" runat="server">
<p>
<asp:Label id=lblTitle runat="server" Font-Names="Arial"
Font-Bold="True">Worldwide Books Search</asp:Label>
</p>
<p>
<asp:Label id=lblCriteria runat="server" Font-Names="Arial"
Font-Italic="True">Search Criteria</asp:Label><br>
<asp:TextBox id=txtSearch runat="server"></asp:TextBox>
</p>
<p>
<asp:Button id=cmdSearch runat="server" Text="Search"></asp:Button>
</p>
<p>
<asp:DataGrid id=grdBooks runat="server" Font-Names="Arial"
ForeColor="Black" Font-Size="Smaller">
<property name="AlternatingItemStyle">
<asp:TableItemStyle HorizontalAlign="Left" VerticalAlign="Top"
BackColor="Salmon">
</asp:TableItemStyle>
</property>
<property name="FooterStyle">
<asp:TableItemStyle ForeColor="White" BackColor="Silver">
</asp:TableItemStyle>
</property>
<property name="ItemStyle">
<asp:TableItemStyle HorizontalAlign="Left" VerticalAlign="Top" BackColor="White">
</asp:TableItemStyle>
</property>
<property name="HeaderStyle">
<asp:TableItemStyle Font-Bold="True" ForeColor="White"
BackColor="Navy">
</asp:TableItemStyle>
</property>
</asp:DataGrid>
</p>
</form>
</body>
</html>
下面是运行后的界面:
下面,我们需要建立我们的代码绑定页面。(如果我们使用Visual Studio.NET Beta1来构建我们的ASPX文件的话,那么系统会在ASPX生成的同时,自动的产生相关的代码绑定文件)。在这篇文章,我们的例子使用的VB语言,当然其他任何被支持的语言(比如:C#,C++)也能被使用。为了使得代码绑定页面正常工作,一些项目需要在源文件当中包含进来。如下:
一些相关的集合名称控件需要引用
ASPX文件所要继承的公共类需要存在,并且这个类需要继承System.Web.UI.Page
控制变量的声明
对于我们的例子,我们需要引用System.Web.UI.WebControls这个名称空间来存取Web控件的类。为了操作数据库中的资料,我们需要引用System.Data和System.Data.SQL这两个名称空间。引用System.Collections名称空间允许我们使用哈希表来捕获应用程序的相关设定。通过Microsoft.VisualBasic这个名称空间,我们可以使用一些VB的函数库。
接下来,我们需要建立一个公共的类使得我们的ASPX文件可以继承它。类的名称应当和我们的ASPX文件中指令@page的属性inherints指定的名称相同。这个类应当继承System.Web.UI.Page。通过继承上面的类,我们建立的类就可以存取ASPX页面了。
最后,我们需要声明我们在程序中用到的控件,尤其是我们的按钮控件,这样我们就可以捕获到按钮的click事件了。为了能做到这点,我们需要在类中建立这些用来表现我们的按钮和文本框的变量。这些变量需要使用WithEvents关键字来建立,如下所示:
Protected WithEvents cmdSearch As System.Web.UI.WebControls.Button
Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
这样,我们的代码绑定页面看起来如下:
Option Strict Off
Imports System.Data
Imports System.Data.SQL
Imports System.Web.UI.WebControls
Imports System.Collections
Imports Microsoft.VisualBasic
Public Class Search
Inherits System.Web.UI.Page
Protected WithEvents cmdSearch As System.Web.UI.WebControls.Button
Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
Protected Sub Search_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
If Not IsPostback Then ' Evals true first time browser hits the page
E
上一个:ASP.NET重用代码技术 - 用户控件技术
下一个:亲密接触ASP.Net(9)