您好,登錄后才能下訂單哦!
這篇文章給大家介紹ASP.NET中GreeterLogic如何使用,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
在ASP模型中,一個頁面是通過HTML定義然后是通過嵌入的腳本擴展的。在ASP.NET中,不同的是,一個頁面是一個生成HTML的類。這個模型被稱為WebForm。如果這個名字讓你想起VB6的表單控件或者.Net WinForms,那么你摸到點邊了。對于WebForms來說,Web服務(wù)器控件都放在一個頁面上。當(dāng)這個頁面被訪問的時候,這些控件自動將它們以HTML的方式實現(xiàn)。瀏覽器和服務(wù)器之間的復(fù)雜過程對程序員來說是透明的,由服務(wù)器自動完成,并允許事件處理,就和WinForms一樣。
歡迎頁面
讓我們馬上開始創(chuàng)建一個叫Greeter(歡迎者)的例子然后看看它是如何工作的。我在學(xué)習(xí)一個新技術(shù)的時候喜歡將它們拆開然后再湊成一整塊。Greeter僅僅是要求用戶輸入一個名字然后發(fā)出一條問候消息,但是它演示了ASP.NET的幾個主要特點。
Greeter頁面定義在兩個文件中:Greeter.aspx,在列表A中,和Greeter.aspx.cs,在列表B中。.aspx文件定義了頁面的UI(用戶界面),而C#文件(你也可以使用Visual Basic.Net或者 JScript.Net)在GreeterLogic類里實現(xiàn)了這個頁面的邏輯。Greeter.aspx文件***行的@Page指令通過繼承將UI綁定在程序邏輯上。這個指令中的ClassName屬性將UI類的名字指定為CreeterUI。而Inherits屬性指定GreeterUI是從GreeterLogic繼承而來的。
Web服務(wù)器端控件
在這個頁面的<form>置標中申明了幾個Web服務(wù)器端控件。Web服務(wù)器端控件是標準HTML置標的WebForm抽象化。它們與標準的HTML相比能夠提供事件處理并生成更多的功能。Web服務(wù)器端控件在一個引用asp命名空間的XML置標里被申明。.aspx文件中的每一個Web服務(wù)器控件在頁面被執(zhí)行的時候會導(dǎo)致控件的一個實例被創(chuàng)建。對每個實例的引用在其相應(yīng)的基類中被保持。這便使得基類能夠訪問這些控件并能夠讓它用程序控制這些控件并處理這些控件產(chǎn)生的事件。每個Web服務(wù)器端控件指定屬性runat="server"來表明這個控件在Web服務(wù)器端運行以便為目標Web瀏覽器生成合適的HTML。
最開始的三個Web服務(wù)器端控件是相當(dāng)直觀的:標簽控件(label),文本框,和一個提交按紐。***的一個控件,<asp:RequiredFieldValidator>,是不同的。一個驗證控件檢查另一個控件的狀態(tài)并且當(dāng)目標控件沒有處于正確狀態(tài)的時候會阻止這個表單被提交。在Greeter這個程序中,RequiredFieldValidator控件被用來驗證一個數(shù)據(jù)是否已經(jīng)被輸入到了文本框控件里。它并不關(guān)心這個數(shù)據(jù)的值是多少。初始狀態(tài)下,RequiredFieldValidator控件是不可見的。如果在按紐被單擊的時候文本框是空的,那么就不會產(chǎn)生單擊消息,而且RequiredFieldValidator控件會顯示ErrorMessage屬性的屬性值,如圖B。對于高版本的瀏覽器來說,RequiredFieldValidator控件生成JavaScript以在客戶端進行數(shù)據(jù)驗證。而對于低版本的瀏覽器來說則需要在服務(wù)器端進行驗證。ASP.NET除了RequiredFieldValidator控件外還提供了幾個驗證控件。
GreeterLogic類
GreeterLogic從類System.Web.UI.Page繼承而來。它申明了幾個protected數(shù)據(jù)域來保存對Greeter.aspx文件中創(chuàng)建的控件的引用。GreeterLogic定義了兩個方法。OnInit方法重載了方法Page.OnInit來為m_Button單擊事件添加一個m_Button_Click方法的代理。m_Button_Click方法處理由m_Button Web服務(wù)器端控件生成的單擊事件。這個單擊事件觸發(fā)一個到服務(wù)器端的數(shù)據(jù)發(fā)送過程。在服務(wù)器端,ASP.NET重新生成這個頁面然后恢復(fù)WEb服務(wù)器控件的狀態(tài)?,F(xiàn)在文本框的值就可以通過訪問TextBoxText屬性得到了。
配置Greeter程序
要配置Greeter應(yīng)用程序,你可以遵循下面的步驟:
創(chuàng)建一個應(yīng)用程序的目錄。
在應(yīng)用程序的目錄里創(chuàng)建一個bin子目錄。
把Greeter.aspx放在應(yīng)用程序目錄里。
使用命令csc /t:library /out:Greeter.dll Greeter.aspx.cs把Greeter.aspx.cs編譯成一個庫文件然后把Greeter.dll放在應(yīng)用程序的bin子目錄里。
創(chuàng)建一個指向應(yīng)用程序目錄的IIS虛擬目錄。
.aspx類的生成
ASP.NET應(yīng)用程序是由IIS ISAPI過濾器aspnet_isapi.dll處理的。在***次訪問的時候,ISAPI過濾器在ASP命名空間下從Greeter.aspx生成一個.NET類然后把它編譯成一個二進制庫文件。IIS會自動搜索應(yīng)用程序的bin子目錄來尋找GreeterLogic基類。圖D顯示了生成的類的繼承關(guān)系。生成的二進制文件會放在一個根據(jù)應(yīng)用程序的虛擬目錄而生成的一個存放臨時ASP.NET文件的目錄里。例如,如果Greeter的虛擬目錄被命名被IntroASPNET,那么Greeter.aspx可能會生成一個名字為effla-hh.dll的二進制文件,并且放在諸如C:\WINNT\Microsoft.NET\Framework\v1.0.3328\Temporary ASP.NET Files\introaspnet\b5d8b0af\51648ab7這樣的一個目錄里。
如果Greeter.aspx被修改了,那么ISAPI過濾器會在下一次頁面訪問的時候自動重新生成二進制文件。
ASP.NET是實打?qū)嵜嫦驅(qū)ο蟮?br/>那么所有這些意味著什么呢?ASP.NET提供了一個真正的面向?qū)ο蟮木幊棠P?。WebForms能夠讓頁面的UI完全獨立于頁面的邏輯而被創(chuàng)建然后通過繼承而結(jié)合起來。不會再有夾雜著HTML和VBScript的頁面了。頁面的邏輯是使用一種全功能的.NET語言,比方C#, Visual Basic.NET, 或者 Jscript.NET實現(xiàn)的。更進一步的說,頁面邏輯的實現(xiàn)過程可以隨意使用所有的.NET基類類庫。Web服務(wù)器控件封裝了不同Web瀏覽器之間的區(qū)別并允許你從更高的級別來設(shè)計Web頁面。所有的一切都會被編譯成微軟中間語言(MSIL)并且能夠在運行時同步轉(zhuǎn)化成機器碼。不會再有解釋性頁面中存在的那種性能損失了。
關(guān)于ASP.NET中GreeterLogic如何使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。