异步回发导致Page_Init吗?(C#)

4
我遇到了一个非常奇怪的问题...
我有一个常规的ASP.Net网页,其中包含一个page_init和一个page_load函数。据我所知(从我查看的所有地方),page_init在第一次页面加载时被调用(即在postback中从未被调用),而page_load在页面发生任何事情时都会被调用。(很难找到任何关于此的信息,除了死链接和关于页面生命周期的东西)
好吧,我有一个包含其他更新面板和其他各种控件的更新面板。每当我编辑这些控件之一时,就会发生异步postback,但是除了调用page_load之外,还会调用不应该发生的page_init(在大型代码库更改之前没有发生)。
因此,我想知道可能导致此行为的任何内容或者我的页面事件调用方式是否错误。
4个回答

4
我认为你对页面加载生命周期的理解有误。OnInit事件会在每个请求中被调用。在你的代码后台中添加Page_Init方法是一种将页面初始化事件与代码绑定的简便方式。
现在我相信你可能将其与“IsPostBack”属性混淆了,如果页面向自身进行提交(例如,当你单击按钮时),该属性将设置为true。我的猜测是你需要在Page_Init方法中添加一个if语句,如下所示:
if(!IsPostBack){
//Do something to to update the UI
}

3

Page_Init 一定会在每个页面加载时被调用,无论是回传还是非回传,和 Page_Load 的情况完全相同。

有一个普遍的误解,认为 Page_Init 不会在每个请求中被调用。

您确定在“大型代码库更改”之前没有发生这种情况吗?


我非常怀疑这个问题会不会被忽略掉,但现在我遇到了一个愚蠢的问题,就是VS不显示我的属性窗口中的事件,所以我无法通过VS的代码隐藏功能来更改任何事件。 - Earlz

0

我的建议是,根据这些规则,在全新的空白页面上创建一个简单的示例,以展示您想要实现的内容。

http://msdn.microsoft.com/en-us/library/ms178472.aspx

保持现有的复杂度,直到它崩溃为止。

如果没有代码,诊断您的问题将会很困难。


0

您的 Page_Init 和 Page_Load 方法应该每次都被调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接