我在主页的Oninit中动态加载UC。
在UC的Oninit,我举办了一个活动。我得到一个空引用异常。代码如下:
//In the UC
public event CommandEventHandler DoneProcessing;
protected override void OnInit(EventArgs e)
{
//Raise a event
CommandEventArgs cmdEventArgs = new CommandEventArgs("done", "test");
DoneProcessing(this, cmdEventArgs);
}
当我在Page Load而不是Oninit中引发事件时,它工作正常,但我不能这样做,因为我必须加载子控件并使事情正常工作(viewstate等),我需要在OnInit上执行此操作
答案 0 :(得分:1)
我相信你正在尝试Event Bubbling。这是一个Ode to Code Reference,称为ASP.NET中的Web用户控件的事件冒泡(C#)
如前所述,我怀疑您可以使用标准
来停止错误if (DoneProcessing != null)
DoneProcessing(this, cmdEventArgs);
但是我认为问题的根源仍然与页面的加载方式有关。周围有黑客攻击,但“正确”(或推荐)的方式是事件冒泡。
答案 1 :(得分:0)
如果没有处理程序,最好在引发事件之前始终进行空检查。
if (DoneProcessing != null) {
DoneProcessing(this, cmdEventArgs);
}