ASP.net页面生命周期问题

| 我了解ASP.net页面生命周期,当我单击按钮时,它会首先重新加载页面,然后为按钮执行后面的代码。我的问题是如何获得它,以便可以在此过程之前进行设置。我试图传递一个已单击按钮的变量,但是由于页面生命周期的原因,它从未收到此消息。我该怎么做才能确定是否已单击此按钮,可能是我对此考虑过多,甚至考虑不足。 页面加载:
        ImageButton btn = (ImageButton)(Page.FindControl(\"displayYImgBtn\"));
        if (btn != null)
        {
            string state = btn.CommandArgument;
            if (state == \"true\")
            {
                search();
                btn.CommandArgument = \"false\";
            }
        }
按键:
    ImageButton btn = (ImageButton)(sender);
    btn.CommandArgument = \"true\";
    
已邀请:
您总是可以直接检查post变量。如果单击了您的提交按钮,它将在
Request.Form
集合中具有一个值,如果它不是回发或其他控件引起的回发,则不应出现。     
有多种解决此问题的方法。 将您的
Page_Load
代码放在
OnPreRender
上。这将在“ 5”之后发生,因此可以确保任何按钮的单击都已被处理。请务必注意,根据您要在此处执行的操作,它可能不起作用。在此类后续事件中,某些组件不接受某些属性更改。如果可行,这是推荐的方法。 在您的按钮上创建一个新事件,当您更改ImageButton的CommandArgument时将触发该事件。然后,在Page_Load上,为新按钮的事件创建一个处理程序,并将您示例中的代码放在Page_Load中。使用此方法将导致此处理在OnPreRender之前进行     
我想这取决于您的Page_Load事件中还发生了什么。 如果在page_load中设置了该变量,则可以将其包装在:
If(!Page.IsPostback) {
   // only execute when the page first loads
}
并为您的ImageButton设置一个OnClick事件     
在Asp.Net Web窗体配置中,单击ImageButton应该触发ImageButton_OnClick类型的事件。在您的标记中或在Page_Init事件方法中,您都需要连接以下事件处理程序: 在标记中:
<asp:imagebutton click=\"ImageButton_Onclick\" runat=\"server\" id=\"displayYImgBtn\" />
在后面的代码中:
public void Page_Init() {
   displayYImgBtn.Click += ImageButton_OnClick;
}
在这两种模型中,都应创建按钮,并且方法应在回发时执行(单击按钮时)。 如果希望在触发按钮单击事件之前设置其他配置信息,则需要在Page.Load事件或Page.Init事件中进行设置。无论何时选择接触控件并设置变量,都不得以任何方式将其从发回状态更改。如果ImageButton的格式不完全像以前一样,则您将不会收到回发事件。     

要回复问题请先登录注册