在创建一个新的网用户控制在visual studio它默认情况下增加了Page_Load事件。是什么优势,使用这种而不是压倒一切的基 OnLoad 活动的控制?它是只是 Page_Load 事件火灾之前 OnLoad?

有帮助吗?

解决方案

OnLoad 方法应该是引发 Load 事件的地方。我个人总是试图处理这个事件,除非我需要在举办活动时做额外的处理。

我建议在正常情况下自行处理事件。

其他提示

您可以在Microsoft的页面生命周期中找到此文章是有用的。

正如您在上面所看到的,它主要归结为个人选择,如果选择是知识渊博的。我见过的最快速但最可靠的概述是 http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx

这只是一个选择问题。对我而言,对象将事件附加到自身似乎很奇怪,特别是当有一个方法可以覆盖时。

我认为ASP.NET团队使用了事件,因为这是ASP中Global.asa的模型,并降低了不了解继承和覆盖虚拟方法的开发人员的标准。

覆盖该方法确实需要有关页面生命周期的更多知识,但没有任何“错误”的信息。用它。

在MSDN页面上阅读名为:" Binding Page Events" 的部分,标题为:“ASP.NET Web服务器控件事件模型”页面链接) 有一些有用的陈述,如:

  

AutoEventWireup 属性的一个缺点是它要求页面事件处理程序具有特定的,可预测的名称。这限制了您命名事件处理程序的灵活性。另一个缺点是性能受到不利影响,因为ASP.NET在运行时搜索方法。对于流量较大的网站,对性能的影响可能很大。

AutoEventWireup 标志打开像Page_Load这样的方法)

即使你继承自 UserControl ,我认为你应该远离重写受保护的方法,如果你不必要的话。 Page_Load 可以让您更轻松地添加特定于 UserControl 的代码。

如果您需要绝对控制何时(/ if) Load 事件被触发(这应该是罕见的,IMO),则只覆盖 OnLoad

我认为它是一样的。 恕我直言,通过活动,您可以获得更多灵活性,因为您可以为您的活动发生多个聆听者!

我认为有一个潜在的重大差异,在这两种方法。

什么我指的是能够拥有控制权的执行顺序。

如果你是压倒一切,你知道当基类负荷将会因为你是叫它。这提供了更多的控制权,但可能是一件坏事,因为许多人会争辩。

如果您使用的事件,你有没有担保条款顺序的呼吁。这迫使你写的载荷事件应该无关什么超级课程做过负荷的阶段。我认为这将是较佳的做法也许这就是为什么VS自动产生的代码是这样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top