反映Page_Load方法返回null

时间:2010-12-02 23:55:00

标签: c# events event-handling postback

我的问题与通过一个方法检索属性有关,该方法被称为委托_的一部分[例如。 Page.OnLoad或Button_Click] _

我在_ [Page_Load] _或_ [AnyWebControl_Event] _上有一个方法属性 [MyMethodAttribute(PropertyOne,PropertyTwo)] 。需要在运行时通过放置它的方法查询此方法属性。该方法驻留在任何网页的代码隐藏中。所有网页都来自 BaseWebPage 。该事件可以是页面加载或回发事件。 根据事件是由页面加载还是回发触发,我得到控件[页面或回发]的句柄并添加我的方法[MyMethod]来执行。

_eventControl = GetPostBackControl(page); //__EVENTTARGET or any control
    if (_eventControl != null) // this is a postback control for any page
    {
        _eventControl.Load += new EventHandler(MyMethod);
    }
    else // this is PageLoad method for any page
    {
        _eventControl = page;
        page.Load += new EventHandler(MyMethod);
    }

之后,我正试图找到这个事件[例如Page_Load]触发了页面加载。这是我无法掌握方法并尝试各种不同方法的地方。

其中一种方法是查询哪个事件委托触发了加载或回发。但是无法从类外部访问该事件,因此我无法使用 MyDelegate.GetInvocationList(),因为这将返回null。

感谢任何帮助。


经过一番努力,我发现__EVENTARGUMENT将为我提供方法名称。 我现在有一个不同的问题。当我反映Page_Load方法的ASPX页面时,它返回null。 有什么想法吗?


Page_load是一种受保护的方法,我使用的是Public BindingFlags。所以使用NonPublic后|实例标志我可以使用relfection

访问Page_Load方法

2 个答案:

答案 0 :(得分:1)

经过一番努力,我发现__EVENTARGUMENT将为我提供方法名称。


Page_load是一种受保护的方法,我使用的是Public BindingFlags。所以使用NonPublic后|实例标志我可以使用relfection

访问Page_Load方法

答案 1 :(得分:0)

Page.IsPostback怎么样?如果IsPostback为false,则页面加载不会由回发触发,并且是新加载的。