我有以下PerformanceFactsheet.aspx.cs页面类
public partial class PerformanceFactsheet : FactsheetBase
{
protected void Page_Load(object sender, EventArgs e)
{
// do stuff with the data extracted in FactsheetBase
divPerformance.Controls.Add(this.Data);
}
}
Run Code Online (Sandbox Code Playgroud)
FactsheetBase定义为
public class FactsheetBase : System.Web.UI.Page
{
public MyPageData Data { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
// get data that's common to all implementors of FactsheetBase
// and store the values in FactsheetBase's properties
this.Data = ExtractPageData(Request.QueryString["data"]);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是FactsheetBase的Page_Load没有执行.
谁能告诉我我做错了什么?有没有更好的方法来获得我追求的结果?
谢谢
Page_Load不是虚方法.什么叫这种方法,它是如何做到的?是反射还是其他技术?还有多少事件以这种方式处理?
还是最好处理重载的OnLoad或Page_Load中的东西?他们有什么不同?
ASP.NET代码隐藏中的page_load和onLoad函数有什么区别?
在visual studio中创建新的Web用户控件时,默认情况下会添加Page_Load事件.使用它而不是覆盖OnLoad控件上的基本事件有什么好处?只是Page_Load事件发生之前OnLoad?
我可能误解了base.OnLoad(e);我的理解是这个语句将调用它所调用的类的基类的OnLoad方法.但是,当我使用调试器逐步执行代码时,我看到不同的结果.
public abstract class BaseUC : System.Web.UI.UserControl
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
SomeAbstractMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
在ascx.cs中的具体类
public partial class MyUserControl : BaseUC
{
protected void Page_Load(object sender, EventArgs e)
{
//On Load logic
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个断点base.OnLoad(e).当我按F11(步入)时,调试器将我带到Page_LoadMyUserControl,因此控制流程为:
BaseUC.OnLoad()
MyUserControl.Page_Load()
BaseUC.SomeAbstractMethod()
Run Code Online (Sandbox Code Playgroud)
有人能解释一下这里发生了什么吗?