我想在按钮事件处理程序中运行代码,但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..)
}
有没有办法首先运行处理程序或检查单击了哪个按钮,以便我可以为重定向添加条件? 感谢。
答案 0 :(得分:2)
此行为实际上是WebForms中的设计。为了保持无状态,只要你想发起服务器端事件,就会发生完整的回发。
所以简短的答案是否定的,你不能强迫你的事件发生在Page_Load
之前。
但是,您可以稍微重构您的设计以获得您想要的行为。目前看起来好像你依赖于发生了一个PostBack来执行你的保存逻辑。您可以在适合您的用户期望保存方式的事件中处理它,而不是处理Page_Load
事件中的逻辑。
如果通过按下按钮触发保存,则移动逻辑以处理保存并重定向到Save_Click
事件将允许与PostBack相关的其他事件也执行自己的逻辑。