繁体   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