【问题标题】:how to handle page event in a user control?如何处理用户控件中的页面事件?
【发布时间】:2019-02-08 19:03:33
【问题描述】:

如果页面上包含某个控件,我需要在 PreRenderComplete 时执行一些代码。仅供参考:该控件恰好包含一个菜单,并且我要执行的代码会破坏超链接中的 URL 以包含菜单所需的信息,但我认为这些细节与我的问题无关。我必须在所有控件的 DataBound 事件之后执行此操作,因为 Repeaters 和 GridViews 以及任何可能包含超链接的东西。

但我不知道如何从控件中将处理程序附加到页面事件。有没有办法做到这一点?

当然,我可以将处理程序添加到每个页面,但这意味着在每个页面上重复相同的代码,并且每当有人创建新页面时,他们必须知道并记住添加此调用。

我尝试附加到用户控件中的事件,但似乎没有一个在页面生命周期中的正确时间执行。

如果这是错误的解决方法,并且您对不同的方法有想法,我很高兴听到。

【问题讨论】:

  • “我尝试附加到用户控件中的事件,但似乎没有一个在页面生命周期中的正确时间执行。”您在哪里尝试过?
  • 我尝试使用 PreRender 事件,但这发生在数据绑定之前,所以它不起作用。我查看了事件列表,但没有看到在数据绑定之后但在设置视图状态之前发生的事件。

标签: asp.net events


【解决方案1】:

这段代码应该适合你:

public partial class PageEventsUC : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.PreRenderComplete += Page_PreRenderComplete;
    }

    private void Page_PreRenderComplete(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
}

【讨论】:

  • 是的!你真是个天才!我应该提到我是用 Visual Basic 编写的,所以我实际上不得不说“AddHandler Me.Page.PreRenderComplete,AddressOf Page_PreRenderComplete”,但这确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 2010-09-10
相关资源
最近更新 更多