如何在 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..)

}

有没有办法先运行处理程序,或者有办法检查点击了哪个按钮,以便我可以向重定向添加条件?谢谢。


拉风的咖菲猫
浏览 185回答 1
1回答

ABOUTYOU

这种行为实际上是在 WebForms 中设计的。为了保持无状态,只要您希望触发服务器端事件,就会发生完整的回发。所以简短的回答是否定的,你不能强迫你的事件发生在Page_Load它之前。但是,您可以稍微重组您的设计以获得您想要的行为。目前,看起来好像您正在依赖发生的 PostBack 来执行您的保存逻辑。Page_Load它可以在适合用户期望保存方式的事件中处理,而不是在您的事件中处理逻辑。如果通过按下按钮触发保存,则将处理保存和重定向到Save_Click事件的逻辑移动将允许与 PostBack 相关的其他事件也执行它们自己的逻辑。
打开App,查看更多内容
随时随地看视频慕课网APP