2014-03-04 106 views
0

在用戶控制頁面Page_preinit事件沒有觸發。 給定的代碼波紋管:爲什麼UserControl Page_PreInit事件不會觸發?

protected void Page_PreInit(object Sender, EventArgs e) 
{ 
    if (!Page.User.Identity.IsAuthenticated && !Page.User.IsInRole("Admin")) 
    { 
     Response.Redirect("abcd/Index.aspx?Auth=Fail"); 
    } 
    else 
    { 
     FormsIdentity id = (FormsIdentity)Page.User.Identity; 
     FormsAuthenticationTicket ticket = id.Ticket; 
     String[] userDatas = ticket.UserData.Split('|'); 
     ViewState["Role"] = userDatas[0]; 
     ViewState["Language"] = userDatas[2]; 
     this.Page.Theme = userDatas[1]; 
    } 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); 
    Response.Cache.SetNoStore(); 
} 

任何想法?

+0

把你的設計頁面也放在 –

+2

你的用戶控件上的'AutoEventWireup'屬性是如何設置的?在你的網頁上? –

+0

不知道爲什麼這個問題是downvoted。 PreInit沒有被用戶控制解僱,特別是如果你花大部分時間在瀏覽頁面,這一點並不明顯。 – mac9416

回答

4

UserControls實際上是從Control類派生的,並且沒有任何PreInit事件可用。

繼承層次

System.Object 
    System.Web.UI.Control 
    System.Web.UI.TemplateControl 
     System.Web.UI.UserControl 

PreInit事件是供頁面類。

相關問題