溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASP.NET頁面對象模型簡介

發(fā)布時間:2021-09-13 09:40:34 來源:億速云 閱讀:106 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“ASP.NET頁面對象模型簡介”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“ASP.NET頁面對象模型簡介”吧!

ASP.NET頁面對象模型簡介

Microsoft Internet 信息服務(wù) (IIS) 所收到的對某 Microsoft ASP.NET 頁面的每個請求都被移交給 ASP.NET HTTP 管線。HTTP 管線由一系列托管對象組成,這些對象按順序處理該請求,并完成從 URL 到普通 HTML 文本的轉(zhuǎn)換。HTTP 管線的入口點(diǎn)是 HttpRuntime 類。ASP.NET 基礎(chǔ)結(jié)構(gòu)為輔助進(jìn)程中所承載的每個 AppDomain 創(chuàng)建此類的一個實(shí)例(請注意,該輔助進(jìn)程為當(dāng)前正在運(yùn)行的每個 ASP.NET 應(yīng)用程序維護(hù)一個不同的 AppDomain)。

HttpRuntime 類從內(nèi)部池中選取一個 HttpApplication 對象,并讓其處理該請求。HTTP 應(yīng)用程序管理器所完成的主要任務(wù)就是找出將實(shí)際處理該請求的類。如果請求 .aspx 資源,則處理程序就是一個頁面處理程序 — 即某個繼承自 Page 的類的一個實(shí)例。資源類型和處理程序類型之間的關(guān)聯(lián)關(guān)系存儲于該應(yīng)用程序的配置文件中。更準(zhǔn)確地說,在 machine.config 文件的 < httpHandlers> 部分中定義默認(rèn)的一組映射關(guān)系。然而,應(yīng)用程序也可以在本地的 web.config 文件中自定義自己的 HTTP 處理程序列表。下面的程序行舉例說明了定義用于 .aspx 資源的 HTTP 處理程序的代碼。

< add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>

擴(kuò)展名可關(guān)聯(lián)到一個處理程序類,或者更普遍地關(guān)聯(lián)到一個處理程序工廠 (handler factory) 類。在所有情況下,負(fù)責(zé)處理請求的 HttpApplication 對象都會獲得一個實(shí)現(xiàn) IHttpHandler 接口的對象。如果根據(jù) HTTP 處理程序來解析關(guān)聯(lián)資源/類,那么所返回的類將直接實(shí)現(xiàn)該接口。如果資源綁定到處理程序工廠,則需要另外一個步驟。處理程序工廠類實(shí)現(xiàn) IHttpHandlerFactory 接口,而該接口的 GetHandler 方法返回一個基于 IHttpHandler 的對象。

HTTP 運(yùn)行時如何能完成整個循環(huán)并處理頁面請求呢?IHttpHandler 接口特別提供了 ProcessRequest 方法。通過對代表所請求頁面的對象調(diào)用此方法,ASP.NET 基礎(chǔ)結(jié)構(gòu)啟動相應(yīng)過程,從而針對瀏覽器生成輸出。

ASP.NET頁面對象模型:Page類

特定頁面的 HTTP 處理程序類型取決于 URL。當(dāng)***調(diào)用 URL 時,將構(gòu)建一個新類并將該類動態(tài)地編譯成一個程序集。用于檢查 .aspx 來源的語法分析過程的輸出結(jié)果就是該類的源代碼。該類被定義為 ASP 命名空間的一部分,并被賦予一個與原始 URL 相似的名稱。例如,如果 URL 終結(jié)點(diǎn)是 page.aspx,則類名稱為 ASP.Page_aspx。但是,也可通過編程設(shè)置 @Page 指令的 ClassName 屬性來控制類的名稱。

HTTP 處理程序的基類是 Page。此類定義了所有頁面處理程序所共享的方法和屬性的最小集合。Page 類中實(shí)現(xiàn) IHttpHandler 接口。

在某些情況下,實(shí)際處理程序的基類并非 Page,而是一個不同的類。例如,如果使用了代碼隱藏,就會出現(xiàn)這種情況。代碼隱藏是一種開發(fā)方法,它將頁面所需的代碼封裝到一個單獨(dú)的 C# 或 Microsoft Visual Basic.NET 類中。頁面的代碼就是一組事件處理程序和幫助器方法,用以實(shí)際創(chuàng)建該頁面的行為。可以利用 < script runat=server> 標(biāo)記將這種代碼定義為內(nèi)聯(lián)代碼,或者也可將其放到一個外部類 — 代碼隱藏類中。代碼隱藏類是一種繼承自 Page 的類,但這種類具有一些額外的方法因而比較特殊。如果指定,代碼隱藏類就用作 HTTP 處理程序的基類。

還有一種情況,即當(dāng)應(yīng)用程序配置文件的 < pages> 部分中重新定義了 PageBaseType 屬性時,HTTP 處理程序也不是基于 Page 的。

< pages PageBaseType="Classes.MyPage, mypage" />

PageBaseType 屬性指出了包含頁面處理程序的基類的類型以及程序集。派生自 Page 的這個類可自動給處理程序賦予一組自定義和擴(kuò)展的方法和屬性。

到此,相信大家對“ASP.NET頁面對象模型簡介”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI