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 pagePage_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
.
精彩评论