ASP.NET Web Pages - 全局頁面
本章為您講解全局頁面 AppStart 和 PageStart。
Web 啟動之前:_AppStart
大多數(shù)服務(wù)器端代碼都是在獨(dú)立的網(wǎng)頁中編寫的。例如,假如網(wǎng)頁包含輸入表單,那么該網(wǎng)頁通常包含用于讀取數(shù)據(jù)的服務(wù)器代碼。
不過,通過在站點(diǎn)根目錄中創(chuàng)建名為 _AppStart 的頁面,您能夠在站點(diǎn)啟動前就已執(zhí)行啟動代碼(startup code)。假如該頁面存在,ASP.NET 會在站點(diǎn)內(nèi)的任何頁面被請求之前首先運(yùn)行這個頁面。
通常 _AppStart 用于啟動代碼和全局值的初始化,比如計數(shù)器和全局名稱。
注釋 1:_AppStart 的文件擴(kuò)展名應(yīng)與網(wǎng)頁相同,比如 _AppStart.cshtml。
注釋 2:_AppStart 有下劃線前綴。正因如此,用戶才無法直接查看該文件。
每張頁面之前:_PageStart
就像在站點(diǎn)啟動前運(yùn)行 _AppStart 那樣,您能夠在每個文件夾中的任意頁面之前運(yùn)行代碼。
對于 web 中的每個文件夾,您能夠添加名為 _PageStart 的文件。
通常 _PageStart 用于設(shè)置文件夾中所有頁面的布局文件,或者在運(yùn)行頁面之前檢查用戶登錄。
如何工作?
下面的示意圖展示了其工作原理:

當(dāng)請求到來時,ASP.NET 檢查 _AppStart 是否存在。如果存在,并且這是對站點(diǎn)的第一次請求,則運(yùn)行 _AppStart。
然后 ASP.NET 檢查 _PageStart 是否存在。如果存在,則運(yùn)行 _PageStart,在被請求的頁面之前。
如果您在 _PageStart 內(nèi)部引用了對 RunPage() 的調(diào)用,那么您可以規(guī)定在何處運(yùn)行被請求的頁面。否則,_PageStart 在被請求頁面之前運(yùn)行。