Asp.net Can';I don’我不能让我的活动付之一炬
首次加载页面(!IsPostback)时,我在代码中创建一个按钮并将其添加到页面中,然后将事件处理程序添加到click事件中 但是,当单击按钮时,页面重新加载后,我的事件处理程序不会启动Asp.net Can';I don’我不能让我的活动付之一炬,asp.net,Asp.net,首次加载页面(!IsPostback)时,我在代码中创建一个按钮并将其添加到页面中,然后将事件处理程序添加到click事件中 但是,当单击按钮时,页面重新加载后,我的事件处理程序不会启动 有人能解释为什么吗?您需要添加按钮,而不仅仅是针对非回发。这是因为发生的事件绑定需要转换为HTML。如果绑定到OnInit和OnLoad之间的页面,则会发生此回发。因此,如果您希望按钮正确绑定事件,请确保您在OnInit中完成这项工作 请参阅“生命周期说明”页 如果没有在每次回发时重新附加事件处理程序,则按钮的
有人能解释为什么吗?您需要添加按钮,而不仅仅是针对非回发。这是因为发生的事件绑定需要转换为HTML。如果绑定到OnInit和OnLoad之间的页面,则会发生此回发。因此,如果您希望按钮正确绑定事件,请确保您在OnInit中完成这项工作 请参阅“生命周期说明”页
如果没有在每次回发时重新附加事件处理程序,则按钮的事件将不存在。您需要确保每次刷新页面时都附加了事件处理程序。因此,以下是页面的事件顺序:
@布拉德:你的答案不完整;他很可能在页面生命周期中的页面加载事件中做得太晚了 好吧,这是你错过的 ASP.NET是无状态的。这意味着,在呈现页面并将其发送到浏览器后,页面对象及其上的所有内容都将被销毁。服务器上该页面与用户浏览器上的内容之间没有链接 当用户单击按钮时,该事件连同其他信息(如隐藏的viewstate字段)一起发送回服务器 在服务器端,ASP.NET确定处理请求的页面,并从头开始重建页面。服务器控件的新实例将根据.aspx页面创建并链接在一起。重新组装后,将对回发数据进行评估。viewstate用于填充控件,并触发事件 这一切都是按照特定的顺序发生的,称为。为了在ASP.NET中执行更复杂的操作,例如创建动态控件并在运行时将其添加到网页,您必须了解网页生命周期 对于您的问题,您必须在每次加载页面时创建该按钮。此外,必须在页面上触发事件之前创建该按钮。控制事件在页面加载和页面加载完成之间触发 您希望在分析ViewState信息并将其添加到控件之前以及在触发控件事件之前加载控件,因此需要处理PreInit事件并在该点添加按钮。同样,每次加载页面时都必须执行此操作 最后一个音符;在ASP.NET中,页面事件处理有点奇怪,因为事件是自动连接的。注意,加载事件处理程序称为页面加载