我有一个带有 asp.net 服务器端按钮控件的用户控件。我在多个页面上使用此用户控件。我在用户控件的按钮单击事件上引发自定义事件。使用此用户控件的所有父页面都应收到我从用户控件引发的此自定义事件的通知。除了在所有父页面中订阅此事件之外,是否有一种简单的方法可以让我在父页面中获得有关此自定义事件的通知?
我尝试在一个抽象基类中订阅此用户控件事件,该基类覆盖OnLoad()
父页面的事件并让所有父页面都继承自此抽象基类。后面的用户控件代码是:
public partial class CustomPaging : System.Web.UI.UserControl
{
public delegate void NavigationButtonHandler(int currentPage);
public event NavigationButtonHandler NavigationButtonClicked;
public int CurrentPage { get; set; }
protected void btnPrev_ServerClick(object sender, EventArgs e)
{
if (NavigationButtonClicked != null)
{
NavigationButtonClicked(CurrentPage);
}
}
}
抽象基类是:
public abstract class CustomPagingBase
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
((CustomPaging)this.FindControl("ucPaging")).NavigationButtonClicked += new CustomPaging.NavigationButtonHandler(CustomPagingBase_NavigationButtonClicked);
}
void CustomPagingBase_NavigationButtonClicked(int currentPage)
{
LoadData(currentPage);
}
protected abstract void LoadData(int currentPage);
}
但是这件作品this.FindControl("ucPaging")
返回null。请注意,我有一个 ucPaging id 的用户控件,我在父页面的标记中以声明方式设置