按钮Vis_属性在Page_Init和Page_Load之间变化

时间:2012-03-08 17:03:15

标签: c# asp.net .net

以下是我的按钮:

<asp:Button ID="PreviousButton" CssClass="previous-button button" Text="Previous" Visible="false" OnClick="PreviousButton_Click" runat="server" />
<asp:Button ID="NextButton" CssClass="next-button button" Text="Next" Visible="false" OnClick="NextButton_Click" runat="server" />

Page_Init期间执行此代码:

NextButton.Visible = bNextEnabled;
PreviousButton.Visible = bPreviousEnabled;

此时bNextEnabledbPreviousEnabled都是True

Page_Init Response.Write(NextButton.Visible.ToString())的末尾是True

Page_Init Response.Write(PreviousButton.Visible.ToString())的末尾是True

-

Page_Load Response.Write(NextButton.Visible.ToString())的开头是False

Page_Load Response.Write(PreviousButton.Visible.ToString())的开头是True

我已经推断了按钮的代码,但我会提供其他可能相关的内容,但我不知道那可能是什么。

页面上的任何其他位置都没有更改任何按钮的Visible属性。按钮停止工作的页面是回发。回发之前的页面两个按钮都设置为Visible = false,但我无法想象这会如何影响。

那么这里发生了什么?两个按钮使用完全相同的代码,但是一个按预期工作,另一个不按..

1 个答案:

答案 0 :(得分:4)

这很可能与保存到ViewState中的属性设置有关。这是InitLoad之间唯一可能对控件属性产生影响的事情(据我所知)。在加载ViewState的值之前以及在打开ViewState跟踪之前触发Init,因此您可以在那里更改它,然后在加载ViewState时它会被覆盖。

如果您无法在Load事件而非Init中设置这些属性,则可以尝试使用PreLoad事件。

这是a good reference for the page lifecycle以及发生时的情况。