我在页面的 Page_Load 事件上设置了一个断点,该事件永远不会被触发。没有警告或消息表明断点可能永远不会被击中,即使页面加载成功它也永远不会被击中。
成功登录后,使用登录控件的 DestinationPageUrl 属性将用户重定向到此页面。如上所述,我可以登录并进入此页面,所以至少那部分是有效的。
如果我在登录页面的 Page_Load 事件上设置断点(这里只是普通的旧 ASP.NET 示例 Web 应用程序),断点将被命中。我可以进入代码,但 page_load 事件永远不会被击中,页面只会出现。在这个序列中,我逐步执行了 login.aspx 和 site.master 的 page_load 事件,但没有执行我真正想看到的 page_load。
有什么建议吗?谢谢!
最佳答案
为了执行 Page_Load,必须满足以下条件之一:
您必须在 aspx 页面的 @Page 指令中设置 AutoEventWireup="true"。
事件处理程序必须显式连接,通常在 OnInit 中
更新
正如@bzlm 的评论中所指出的,AutoEventWireup 的默认值为“true”,因此实际上如果页面指令中缺少 AutoEventWireup 属性,它也会被执行。
旧版本的 Visual Studio(当然是 2003,也许是 2005)用于 explicitly wireup events, and recommend to set AutoEventWireup to false .
据我所知,我认为这不再是真的。显式接线是通过以下行完成的:
this.Load += new System.EventHandler(this.Page_Load);
在由设计器生成并从 OnInit
方法调用的 InitializeComponent 方法中。
关于c# - Page_Load 上的断点如何不命中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5707487/