为什么UserControl Page_PreInit事件不会触发?

时间:2014-03-04 10:50:03

标签: c# asp.net

在用户控制页面中Page_preinit事件未触发。 给出Bellow的代码:

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();
}

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

UserControls实际上来自 Control 类,并且没有任何PreInit个可用事件。

继承层次结构

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

PreInit事件可用于Page Class。