如何在Web应用程序页面中订阅页面事件

时间:2009-08-20 01:20:04

标签: asp.net webforms event-handling

我正在从ASP.NET 1.1迁移,并且我曾经使用designer订阅页面事件,这会在页面上添加对InitializeComponent方法的订阅。

在ASP.NET 2.0中,如何从设计器订阅Page事件?

不使用设计师这似乎有效。

protected void Page_Init(object sender, EventArgs e) {
  // The code, no safety here, just convention
}

// OR

protected override void OnInit(EventArgs e) {
    base.OnInit(e);
    // The code
}

订阅页面事件的推荐方法是什么?同样的问题适用于MasterPage。

此外,在 UserControl上订阅活动的最佳方式是什么?当我在UserControl上声明Page_XXX时,会多次调用该事件。

1 个答案:

答案 0 :(得分:3)

Pages支持auto event-wire-up,这意味着ASP.NET会查找具有特定名称的方法,并在引发某些事件时自动运行这些方法。如果Page指令的AutoEventWireUp属性设置为true(默认为true-asp.net 2.0),则页面事件会自动绑定到使用Page_Event命名约定的方法,例如Page_Load,Page_PreInit,Page_Init等。

void Page_PreInit(){

}
void Page_Init(){

}

编辑:

@Dmitriy:所以只有方法名称很重要吗?

@Dmitriy:你们如何订阅设计师的活动?

您无法通过设计师订阅页面事件。

请参阅此示例:如果AutoEventWireUp为false,如何为页面事件添加事件处理程序?

 public _Default() //Constructor
     {
        this.Load += new EventHandler(_Default_Load);
    }

    void _Default_Load(object sender, EventArgs e)
    {

    }