代碼綁定是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>