Page_Load 与 OnLoad

发布于 2024-10-25 09:25:29 字数 927 浏览 0 评论 0原文

为什么 DisplayUsers(); 不起作用?

我的基本页面是:

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

我的类是,

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

        DisplayUsers();
    }

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

DisplayUsers() 不起作用,

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)
    {                        
        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,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

独木成林 2024-11-01 09:25:29

如果我没记错的话,您需要调用基类的 OnLoad 事件来正确注册 Page_Load 事件:

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

以下是一些不错的读物:

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:

拥抱我好吗 2024-11-01 09:25:29

根据 .NET 应用程序中的性能提示和技巧

避免 Autoeventwireup 功能

不要依赖 autoeventwireup,而是覆盖页面中的事件。例如,不要编写 Page_Load() 方法,而是尝试重载 public void OnLoad() 方法。这使得运行时不必为每个页面执行 CreateDelegate()。

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.

七七 2024-11-01 09:25:29

在执行的代码中,没有区别,但是

  • 应该为每个页面
  • Page_Load(以及其他事件(类似这样)使用自动事件订阅机制,它使用反射,这会稍微影响性能,

我个人建议重写 OnLoad() ,只是不要忘记调用base

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文