【问题标题】:How to subscribe to page events in Web Application Page如何在 Web 应用程序页面中订阅页面事件
【发布时间】:2009-08-20 01:20:04
【问题描述】:

我正在从 ASP.NET 1.1 迁移,我曾经使用设计器订阅页面事件,该设计器在页面上添加了对 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 时,该事件会被多次调用。

【问题讨论】:

  • 停止使用设计器....说真的。
  • 我没有,真的:)。我只想找到订阅事件的最佳方式,而不会出错(处理程序未调用或调用多次)。到目前为止,constructor 的订阅是最好的。但我必须以它们不会自动连接的方式命名事件。

标签: asp.net webforms event-handling


【解决方案1】:

页面支持自动事件连接,这意味着 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)
    {

    }

【讨论】:

  • 我知道我的样本与您在问题中提供的样本相同。它不回答任何问题。在 ASP.NET 2.0 中,如何从 designer 订阅 Page 事件?订阅页面事件的推荐方式是什么?
  • 其实我是在避免使用两个参数的事件处理程序。
  • 我没有提到这一点。那么只有方法名称很重要吗?另外,您如何订阅来自设计师的事件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多