ASP.net AutoEventWireup属性有什么作用?

时间:2012-11-08 12:17:30

标签: asp.net autoeventwireup

我来自ASP背景并学习ASP.NET。我想知道AutoEventWireup属性是否也是控制事件(如Button_Click)或只是Page事件? 我在其他地方看过,如果你把它设置为TRUE&还提供显式事件处理程序,它将被执行两次,你能解释为什么会发生这种情况(因为只有一个处理程序VS必须识别它已经执行)? 你能否将Use Cases设置为False?

非常感谢代码示例

2 个答案:

答案 0 :(得分:3)

通常将其设置为true,这意味着您甚至不需要显式地连接每个。如果要对多个控件/事件使用相同的事件处理程序,则将其设置为false。在这种情况下,您可以显式地将多个事件连接到单个事件处理程序。它控制所有事件。当您将该属性设置为true并且还明确地对事件进行连接时,.Net将触发​​该事件两次,因为委托将被注册两次。

答案 1 :(得分:1)

AutoEventWireup元素上的

Page通过查找与预期签名和命名约定匹配的方法(即Page_<event>)来工作。如果找到,页面框架将在正常“引发”事件之前直接调用事件处理程序。这就是为什么,如果您在代码中注册事件处理程序,它们将被有效地调用两次。

这与事件处理程序通常的工作方式完全不同。如果您编写代码以使用相同的事件两次注册处理程序,则每个事件只会调用一次。这是因为事件处理程序本质上是一组委托,并且尝试将委托添加到同一方法是无操作。

AutoEventWireup行为仅适用于页面引发的事件。您不会将其用于其他控件,因此应该手动连接,通常是Page_InitPage_Load事件。

如果您不使用AutoEventWireup(即将其设置为“false”),则必须自己连接页面事件处理程序以使其被调用。这就是Visual Studio设计器所做的,因为它为您生成了事件注册代码。