c# - 如何在 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
事件的移动逻辑将允许与 PostBack 相关的其他事件也执行它们自己的逻辑。
推荐阅读
- javascript - 正则表达式来选择特定的词
- visual-studio-2019 - 更改 Visual Studio 2019 的搜索引擎
- c++ - C ++,如果某些条目重复,则输出所有可能的排列(递归算法)
- windows - Powershell检查用户是否是本地用户并且具有本地Windows机器上的用户名和密码的管理员权限(非活动目录)
- java - SystemProperties 类方法的替代方法及其在 java 或 kotlin 中的用法是什么?
- reactjs - 列内的反应路由器链接不会“填充”整个列
- sql-server - 如何通过 EF 检索自定义/用户定义列的值?
- javascript - 使用 flex-box 时如何保持图标居中?我有一个案例,我在一个页面中有 2 个图标,在另一个页面中有 3 个图标用于反应项目
- sql-server - 我的 Visual Studio 无法连接到 SQL Cluster Server
- c# - 如何从
并使用 Xamarin 从一页到另一页显示此文本?