Asp.net 防止ItemCommand在刷新时触发

Asp.net 防止ItemCommand在刷新时触发,asp.net,command,refresh,repeater,Asp.net,Command,Refresh,Repeater,我有一个web控件,其中包含一个带有按钮的转发器,该按钮使用命令向嵌套转发器添加项目 control -> Rounds - [+] (add group) -> Groups 据我所知,我需要使用ItemCommand,这样我就可以传递我将向其中添加组的round ID的参数,但是当我执行add命令,然后刷新页面时,该命令再次被触发 我不希望发生这种情况,有没有办法知道浏览器正在刷新,然后我可以设置cookie或会话变量 使用重定向似乎不起作用,因为我使用一个会话变量

我有一个web控件,其中包含一个带有按钮的转发器,该按钮使用命令向嵌套转发器添加项目

control ->
  Rounds - [+] (add group) ->
    Groups
据我所知,我需要使用ItemCommand,这样我就可以传递我将向其中添加组的round ID的参数,但是当我执行add命令,然后刷新页面时,该命令再次被触发

我不希望发生这种情况,有没有办法知道浏览器正在刷新,然后我可以设置cookie或会话变量

使用重定向似乎不起作用,因为我使用一个会话变量来存储轮次列表,并确保在任何时候都只有一个该变量的实例。当页面第一次打开时,我将其删除并添加为新的,这似乎会导致列表被重置

下面是ItemCommand事件的代码

任何帮助都将不胜感激

谢谢你的建议

您是否已将web控件置于autopostback=false模式? 为什么不把所有的页面加载定义都放进去呢

if (!page.ispostback())
?


这将在每次加载页面时跳过该页面,第一个页面除外。

您可以重定向到ItemCommand处理程序末尾的同一页面

所谓的后重定向GetPRG模式


如果您想添加其他内容,请添加更多详细信息。我已尝试在设置会话变量的页面中使用ispostback和iscallback。但是Response.RedirectRequest.RawUrl;始终将这些值设置为false,因此使用此选项会导致重置变量。否则,在web控件中,在调用ItemCommand事件和刷新屏幕时,IsPostBack始终为true,因此我无法区分两者。您是否在页面加载中控制IsPostBack?这不会解决您的问题吗?我已尝试在设置会话变量的页面中使用IsPostBack和iscallback。但是Response.RedirectRequest.RawUrl;始终将这些值设置为false,因此使用此选项会导致重置变量。否则,在web控件中,在调用ItemCommand事件和刷新屏幕时,IsPostBack始终为true,因此我无法区分两者。问题是,由于我有一个会话变量,该变量在页面首次加载时设置为新实例,这意味着liost在重定向后为空。我已经尝试在设置会话变量的页面中使用ispostback和iscallback。但是Response.RedirectRequest.RawUrl;始终将这些值设置为false,因此使用此选项会导致重置我的变量。@Kieran:难看但可以工作:使用会话变量YourPagePostback,在响应之前将其设置为true。重定向,在page_load中检查它,将其从会话中删除。
if (!page.ispostback())
Response.Redirect("YourPage.aspx");