簡體   English   中英

如何在Page.IsPostBack之前運行事件處理程序

[英]How can I run a event handler before Page.IsPostBack

我想在按鈕事件處理程序中運行代碼,但是if(Page.IsPostBack)條件首先運行,並且包含重定向,因此事件永遠不會運行。

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        (do some stuff with save button pressed...)

        // then return the same page to prevent another post on refresh 
        Response.Redirect(Request.Url.AbsoluteUri);
    }
}

在該頁面上,還有另一個按鈕調用處理程序:

protected void Export_Click(object sender, EventArgs e)
{ 
    (do other stuff..)
}

有沒有一種方法可以先運行處理程序,也可以檢查單擊了哪個按鈕,以便可以向重定向添加條件? 謝謝。

此行為實際上是設計使然的WebForms。 為了使事情保持無狀態,每當您希望觸發服務器端事件時,就會發生完整的回發。

因此,簡短的答案是“否”,您不能強迫您的事件在Page_Load之前發生。

但是,您可以稍微調整設計以獲得所需的性能。 目前,看來您是依靠PostBack來執行保存邏輯的。 除了處理您的Page_Load事件中的邏輯外,還可以在適合您的用戶期望保存方式的事件中處理它。

如果通過按下按鈕觸發保存,則將用於處理保存的邏輯轉移到Save_Click事件並重定向到Save_Click事件,這將使與PostBack相關的其他事件也執行它們自己的邏輯。

暫無
暫無

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

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