小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

asp.net頁面事件重寫問題

 昵稱10504424 2013-02-18
前言:
對于ASP.NET編程,事件模型是入門知識。頁面事件,我們通常用得最多的是Load事件,但是實際上頁面還有Init,Render等事件可用。事件的發(fā)生順序可以參照MSDN。本篇不談順序,而是談事件的重寫。
問題:
網(wǎng)站中有很多頁面是需要權(quán)限驗證的,即非登陸用戶無權(quán)訪問。如果我們一頁一頁的在PageInit事件中處理權(quán)限會非常麻煩,常見的設(shè)計就是們將這部分頁面抽象出一個共同的父類RightPage,在父類中寫一次PageInit的處理即可,那么凡是繼承RightPage的頁面都自動具備了權(quán)限驗證功能。
試驗:
RightPage類代碼如下:
public class RightPage : System.Web.UI.Page
{
void Page_Init(object sender, EventArgs e)
        {
                //檢查用戶是否已經(jīng)登錄
                Data.UserInfo ui = (Data.UserInfo)Session["userinfo"];
                //如果沒有登錄則導(dǎo)航到登錄頁面。
                if (ui == null)
                {
                        Response.Redirect("~/UserLogin.aspx");
                }
        }
}
這是利用了ASP.NET默認(rèn)事件方法,命名規(guī)則一般是Page_事件名。比如我們常見的Page_Load就表示Page的Load事件發(fā)生時要執(zhí)行的代碼。在以前的ASP.NET Web應(yīng)用程序模式下,還可以看到Page.Load+=new EventHandler這樣的語句,而在ASP.NET網(wǎng)站模式下就難看到了。
這種方法的優(yōu)點是實現(xiàn)簡單,容易理解。缺點是不方便多層次繼承中的重寫,因為這種默認(rèn)方法中不能使用base關(guān)鍵字。當(dāng)然,你可以使用實時綁定的辦法來實現(xiàn)上述效果,這樣就可以避免使用Page_**方法了。
 
第二種方法是重寫On**方法:
        protected override void OnLoad(EventArgs e)
        {
                base.OnLoad(e);
                //開始驗證
                //檢查用戶是否已經(jīng)登錄
                Data.UserInfo ui = (Data.UserInfo)Session[
"userinfo"];
                //如果沒有登錄則導(dǎo)航到登錄頁面。
                
if (ui == null)
                {
                        Response.Redirect(
"~/UserLogin.aspx");
                } 
 

        }
結(jié)論:
重寫時盡量用override重寫On**方法。這樣方便多層繼承。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多