首頁 | 社區 | 博客 | 招聘 | 文章 | 新聞 | 下載 | 讀書 | 代碼
親,您未登錄哦! 登錄 | 注冊

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”目錄中。

本欄文章均來自于互聯網,版權歸原作者和各發布網站所有,本站收集這些文章僅供學習參考之用。任何人都不能將這些文章用于商業或者其他目的。( Pfan.cn )

編程愛好者論壇

本欄最新文章

黑龙江p62彩票开奖