开发者

Page_Load vs OnLoad

开发者 https://www.devze.com 2023-02-18 22:58 出处:网络
Why DisplayUsers(); doesn\'t work? My base page is: public class adminPage : System.Web.UI.Page { protected override void OnLoad(EventArgs e)

Why DisplayUsers(); doesn't work?

My base page is:

public class adminPage : System.Web.UI.Page
{
    protected override void OnLoad(EventArgs e)
    {
        if (User.Identity.IsAuthenticated == false) { Response.Redirect("~/Account/login.aspx?ReturnUrl=/admin"); };
        if (!(User.IsInRole("admin") || User.IsInRole("super user"))) { Response.Redirect("/"); };
    }        
  }

my class is

public partial class users : adminPage
{ 
    protected void Page_Load(object sender, EventArgs e)
    {    开发者_JAVA技巧                    
        string sName;
        adminGeneralData.GetToolData(2, out sName);
        pageH1.Text = sName;

        DisplayUsers();
    }

    protected void DisplayUsers()
    {
        DataSet ds = userData.GetUsersData();
        userList.DataSource = ds;
        userList.DataBind();
    }
}

but DisplayUsers() doesn't work,


If I recall correctly, you'll need to call the base class's OnLoad event to register the Page_Load event properly:

protected override void OnLoad(EventArgs e)
{
    if (User.Identity.IsAuthenticated == false) { Response.Redirect("~/Account/login.aspx?ReturnUrl=/admin"); };
    if (!(User.IsInRole("admin") || User.IsInRole("super user"))) { Response.Redirect("/"); };

    base.OnLoad(e);
}

Here are a couple of good reads:

  • OnLoad vs. Page_Load vs. Load event
  • When creating a web control should you override OnLoad or implement Page_Load


According to Performance Tips and Tricks in .NET Applications:

Avoid the Autoeventwireup Feature

Instead of relying on autoeventwireup, override the events from Page. For example, instead of writing a Page_Load() method, try overloading the public void OnLoad() method. This allows the run time from having to do a CreateDelegate() for every page.


In the code executed, there is no difference, but

  • AutoEventWireup should be enabled (usually in markup) for each page
  • Page_Load (and other events like this) uses automatic events subscription mechanism, which uses Reflection, what slightly hits performance

I personally recommend to override OnLoad(), just don't forget to call base.

0

精彩评论

暂无评论...
验证码 换一张
取 消