c# - ASP.NET 页面中的 base.OnLoad(e)

标签 c# asp.net user-controls

我可能误解了 base.OnLoad(e); 的意思我的理解是这条语句将调用调用它的类的基类的 OnLoad 方法。但是,当我使用调试器逐步执行代码时,我看到了不同的结果。

public abstract class BaseUC : System.Web.UI.UserControl
{
   protected override void OnLoad(EventArgs e)
   {
    base.OnLoad(e);

    SomeAbstractMethod();
   }
}

在ascx.cs具体类中

public partial class MyUserControl : BaseUC
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //On Load logic
    }
}

我在 base.OnLoad(e) 上有一个断点。当我按 F11(进入)时,调试器将我带到 MyUserControl 的 Page_Load,因此控制流程是:

BaseUC.OnLoad()
MyUserControl.Page_Load()
BaseUC.SomeAbstractMethod()

谁能解释一下这是怎么回事?

最佳答案

  1. BaseUC.Onload 调用 Control.OnLoad 触发 Load 事件。
  2. Page_Load 方法因 AutoEventWireUp=True 而起作用,并在 Load 事件执行时执行。
  3. 然后 BaseUC 将继续执行,调用 SomeAbstractMethod。

关于c# - ASP.NET 页面中的 base.OnLoad(e),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329090/

相关文章:

.net - 如何分别渲染用户控件

c# - 将 JSON 反序列化为泛型,其中集合属性名称根据类型而变化

c# - AjaxControlToolkit 饼图未正确呈现

javascript - 使用 jquery 选择一个 Asp.net 控件

javascript - 通过javascript代码在UC中触发一些事件

c# - 如果单击 "... Read more "as.net c#,则链接到完整文章

c# - 如何获取元数据自定义属性?

c# - 如何将 IExcelDataReader 值转换为字符串数据类型

c# - 在 AS3/C# 中使用盐加密字符串

c# - 如何自动找出我应该引用哪些程序集以及我应该使用哪些 namespace ?