【问题标题】:ASP event not going to handler method, jumps to page_loadASP 事件不去处理方法,跳转到 page_load
【发布时间】:2011-12-20 13:43:05
【问题描述】:

我正在使用 Visual Studio,并且我将一个方法绑定到按钮的“onclick”事件。在这种情况下,要设置一个 Session[] 变量,在回发时显示。

但是,即使所有代码都编译了,我还是得到了 NullReferenceExceptions。

通过调试器,VS 告诉我应该运行的方法被完全跳​​过,它直接跳转到 Page_Load。我以前从来没有发生过这种情况,所以我不知道是什么原因造成的。我让 VS 生成该方法,因此我希望它实际上会使用该方法。

编辑:澄清一下,我正在为 Session[] 变量设置一个字符串,该变量将在页面重新加载时访问。所以,我需要在页面重新加载之前设置它。但是如果是到Page_Load,说明页面已经重新加载了,不是吗?

EDIT2:一些代码:

<asp:Button ID="registerBtn" Text="Register" runat="server" onclick="registerBtn_Click" />

我希望执行 onclick 中命名的方法,然后重新加载页面。一旦页面被重新加载,Page_Load 就会启动。

【问题讨论】:

  • 你能贴出你一直在尝试的代码吗?
  • 回发总是先到Page_Load,然后再到处理程序。它根本就没有到达处理程序吗?还是在Page_Load之后去那里?
  • @David page_load 出现错误,因为我想获取一些仅在处理程序中设置的数据。这就是为什么处理程序必须在 page_load 之前发生,因为 page_load 需要该数据。此会话变量需要设置之前回发
  • @Koen027:那么您将需要重新设计逻辑的工作方式。回发是对页面的调用,它触发Page_Load 运行。处理程序随后运行。 Page_Load 不能依赖处理程序,ASP.NET 不能那样工作。
  • @Koen027 您的期望与 asp.net 的实际运行方式无关。查看 AVD 发布的链接。它清楚地列出了发生的事件的顺序。

标签: c# asp.net visual-studio-2010


【解决方案1】:

控件事件将在 Page_Load 事件之后处理。看看ASP.NET Page Life cycle event

【讨论】:

  • 但是Page_Load事件是在页面再次加载时执行的,对吧?我希望执行处理程序,然后才重新加载页面。当我需要设置的所有内容都已执行时。
  • Page_Load 不是运行逻辑的合适位置。请查看答案中的 ASP.Net 生命周期链接。
  • @asawyer:页面加载发生在页面重新加载时。我希望在从服务器发送任何新页面之前执行此代码。
  • @Koen027:我们怎么强调都不过分……这不是 ASP.NET 的工作方式。该页面必须被加载(尚未返回给客户端,而是加载到服务器上的调用堆栈中)才能调用其上的任何代码。 Any 类需要先构造后才能使用,Page 也不例外。构造 Page 类时,它会经历特定的事件顺序。该顺序包括调用Page_Load调用任何排队的事件处理程序。您正在尝试做一些 ASP.NET 没有做的事情。
【解决方案2】:

将您的逻辑放在一个函数中,在 Page_Load 中验证是否不是 Postback 以在 EventHandler 中调用您的函数(如果需要)执行您所做的然后调用该函数,因此您在执行完之后调用您的逻辑处理程序,而不是在页面加载中。

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2016-10-07
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多