我创建了一个treeview webpart,如果单击一个节点,它会修改一个SPList,并清除并重新创建树视图。
因此,当我单击某个节点时,页面会刷新,然后发生树视图功能并编辑列表并重新创建树视图。那么问题是如果我通过点击F5来刷新页面,同样的事情再次发生,即即使我没有点击节点,列表也会被再次修改。
我怀疑像树视图节点选择更改事件再次被激活。
当我点击刷新时会发生这种情况:
是否以某种方式重新发送树点击标记或其他内容?如何在刷新时清除它以便它不会尝试重新发送它?
答案 0 :(得分:1)
有两种常见方法可以防止用户刷新页面反复调用对回发执行的操作:
无论他们运行什么代码,都要进行某种检查,看看他们是否已经完成了他们将要做的事情。有时这很容易(即他们点击删除一个项目,但我发现它已被删除),有时这是不可能或不实际的。
执行不想重复的回发后,执行Response.Redirect
(到另一个页面,甚至是同一页面)。通过这样做,当他们点击刷新他们的'最后一个动作'将不是回传,它将是重定向的结果。当然,如果他们开始使用他们的历史来“回归”,他们很容易就会重做你之前做过的任何动作。这种做法并不是阻止他们故意(或恶意)复制动作,只是让他们点击“刷新”而不会意外地重复动作。另请注意,这需要付费。您需要与客户端来回执行另一个,并且您需要重新生成整个页面(这可能会产生性能成本,并且可能也很难实现,具体取决于具体情况)。