我正在从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时,会多次调用该事件。
答案 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)
{
}