【发布时间】: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