【问题标题】:Sharepoint webpart postback issueSharepoint webpart 回发问题
【发布时间】:2012-08-20 16:46:40
【问题描述】:

我创建了一个treeview webpart,如果单击一个节点,它会修改一个SPList,并清除并重新创建treeview。

所以当我单击一个节点时,页面会刷新,然后会出现树视图功能并编辑列表并重新创建树视图。那么问题是如果我通过按 F5 来刷新页面,同样的事情会再次发生,即即使我没有单击节点,列表也会再次被修改。

我怀疑类似树视图节点选择更改事件的事件再次被激活。

当我点击刷新时也会发生这种情况:

它是否以某种方式重新发送树点击标志或什么?刷新时如何清除它,使其不会尝试重新发送?

【问题讨论】:

  • 您是否在点击其中一个按钮之前尝试阅读错误消息?它特别警告您,它将完全按照您的要求进行。
  • 有没有办法在按下刷新按钮时清除它,使其不再尝试重新发送请求?
  • 它周围有一些黑客攻击,是的,但总的来说这是一个浏览器/用户问题。您不想在刚刚执行某个操作时刷新页面,除非您希望再次执行该操作。
  • 有没有办法检测页面是否被用户点击弹出框上的“重试”刷新?
  • 不是真的,至少不是任何好的方法。无论如何,这是解决这个问题的错误途径。

标签: c# sharepoint postback web-parts


【解决方案1】:

有两种常见的方法可以防止用户刷新页面重复调用回发执行的操作:

  1. 在他们正在运行的任何代码中进行某种检查以查看他们是否已经完成了他们将要执行的操作。有时这很容易(即他们点击删除一个项目,但我看到它已被删除),有时这就是不可能或不切实际。

  2. 在执行了您不想重复的回发后,请执行Response.Redirect(到另一个页面,甚至只是同一页面)。通过在他们点击刷新时这样做,他们的“最后一个动作”不会是过去,而是重定向的结果。当然,如果他们开始使用他们的历史“回去”,他们很容易最终重做你之前做过的任何动作。这种做法并没有阻止他们故意(或恶意)复制该操作,它只是允许他们点击“刷新”而不会意外复制该操作。另请注意,这是有代价的。您将需要与客户端来回执行另一个操作,并且您需要重新生成整个页面(这可能会产生性能成本,并且可能也难以实施,具体取决于具体情况)。

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 2011-04-15
    • 2011-06-02
    • 2011-11-03
    • 1970-01-01
    • 2014-05-15
    • 2012-04-17
    • 2011-04-18
    • 2011-06-27
    相关资源
    最近更新 更多