ASP.NET中的代碼分離

 

 

ASP.NET中包含了一種新方法:將商業邏輯代碼從表達代碼中分離出來。這通常被稱爲背後的代碼,功能非常強大,並且非常容易執行。

實現步驟就是:向ASP.NET 頁面中增加用戶界面元素,併爲它們指定屬性“runat=server”。然後,用.NET語言創建一個類文件來操作這些用戶界面元素。最後,在ASP.NET 頁面頂部增加一個指令,將用戶界面與操作它的類文件附着在一起。

用一個簡單的例子就能展示它是如何完成的。下面創建一個名叫WebPage.aspx的ASP.NET頁面,在其中粘貼以下代碼:

<%@ Page Language="VB" Inherits="dotNet101.MySample.WebPage" %>  <html>  <head>  <title>Code-Behind Demo</title>  </head>  <body>  <form id="messageForm" runat="server">  <asp:TextBox id="message" runat="server" />  <asp:Button id="submit" OnClick="submit_OnClick" Text="Send Message" runat="server" />  </form>  </body>  </html>



請注意增加到“Page”指令中的“Inherits”屬性,它負責通知ASP.NET頁面應該爲其商業邏輯使用“dotNet101.MySample.WebPage”類。我們已經向這個頁面增加了兩個ASP.NET服務器控件,並且爲它們和

Form控件本身指定了“runat=server”屬性。這些都是背後的代碼類將要操作的控件。當用戶點擊“submit”(提交)按鈕時,指定給 Button服務器控件的“OnClick”屬性就會告訴ASP.NET引擎激活背後代碼類中的submit_OnClick事件處理器。

下面,我們需要創建一個背後代碼類文件來操作ASP.NET頁面。創建一個名爲CodeBehind.vb的文件,類的Visual Basic.NET 代碼如下:

Imports System  Imports System.Web  Imports System.Web.UI  Imports System.Web.UI.WebControls  Imports System.Web.UI.HtmlControls  Namespace dotNet101.MySample  Public Class WebPage : Inherits Page  Protected messageForm As HtmlForm  Protected message As TextBox  Public Sub submit_OnClick(sender As Object, e As EventArgs)  Dim output As Label = New Label  output.Text = "You just typed: " & message.Text  messageForm.Controls.Add(output)  End Sub  End Class  End Namespace



在這個類文件中,我們引入了許多名稱空間,從而幫助背後代碼的處理。如果我們沒有引入這些名稱空間的話,就無權使用適當的.NET對象來使背後代碼工作。然後我們要指定自己的定製名稱空間。這樣以來,如果我們願意的話,就可以在一個文件中包含一個以上的背後代碼類。否則,每個背後代碼都需要存在於它自己的文件中,你就需要在ASP.NET頁面“Page”指令的“Src”屬性中指定這個文件。

我們的WebPage類是從普通的Page(頁面)對象中繼承來的,因此它有權使用它的固有服務。這樣,就可以與ASP.NET 頁面相互作用,並且如果必要的話,可以在Page (頁面)層事件,如Page_Init 和 Page_Load中放置事件。在這個例子中,我們只是想對ASP.NET頁面上的提交按鈕的點擊做出響應,所以我們執行以前在ASP.NET 頁面中引用過的submit_OnClick 事件處理器。在事件處理器內部,我們聲明並且初始化一個新的Label(標籤)服務器控件。然後我們抓取“message”TextBox (信息文本框)服務器控件的內容,並將其分配給新的Label(標籤)服務器控件。最後,我們向Form(表單)服務器控件的Controls(控件)集合中增加Label(標籤)服務器控件。這樣,當頁面重新裝載時,信息就會被顯示在頁面上。

要注意我們聲明受保護的變量“messageForm”和“message”來存放在ASP.NET頁面上對它們相應控件的引用,正是這些聲明使我們能夠從背後代碼類中看到和操作控件。實際上,背後代碼類在遺傳層次上比ASP.NET 頁面本身的位置還要高,因此在ASP.NET 頁面上相應的控件只是通過遺傳在簡單地“執行”背後代碼類中的聲明。

例子的最後一步是編譯背後代碼類,這可以通過在命令行執行使用下面的指令完成:

vbc /t:library /out:dotNet101.MySample.dll  /r:System.dll,System.Web.dll CodeBehind.vb


運行了這個指令後,一個名爲“dotNet101.MySample.dll”的文件就會出現在目錄中,然後將這個文件放在ASP.NET站點的 “bin”目錄中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章