簡體   English   中英

ASP.net頁面生命周期問題

[英]ASP.net Page Life Cycle Problem

我了解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 這將在RaisePostBackEvent之后發生,因此可以確保已處理任何按鈕的單擊。 請務必注意,根據您要在此處執行的操作,它可能不起作用。 在此類后續事件中,某些組件不接受某些屬性更改。 如果可行,這是推薦的方法。
  • 在您的按鈕上創建一個新事件,該事件在您更改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的格式不完全像以前一樣,則您將不會收到回發事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM