gpt4 book ai didi

Sharepoint 2010 事件接收器中的重定向

转载 作者:行者123 更新时间:2023-12-02 19:23:41 24 4
gpt4 key购买 nike

我正在查看一些代码,这些代码破坏了 SP2010 中列表项更改的保存。在事件接收器的构造函数中,HttpContext 被存储为局部变量,然后在最后的 ItemUpdating 中,检索包含返回 url 的查询参数并将其传递给 SPUtility.Redirect(...) 。这具有取消在编辑表单中所做的任何更改的效果。因此,按照我在网上找到的场景,我将 HttpContext 存储为静态类对象,并在 ItemUpdated 事件中重定向,现在编辑将被保留,然后重定向到我们期望的位置。

不过,我担心将特定用户的 HttpContext 作为静态存储在类上,如果另一个用户在用户 1 最初设置上下文和重定向之前之间执行相同的操作,则该类可能会被劫持。用户 2 将覆盖上下文,并且存在潜在问题。

我能想到的唯一的快速解决办法是存储一个静态字典,其中键是用户 ID,然后在重定向之前删除该条目,以免漏掉杂散的 HttpContext 实例。

所以看看 here 中接受的解决方案servy42 的第一个回复指出它最初适用于一些简单的测试用例这一事实并不能使它成为一个可行的解决方案。但没有建议一个可行的解决方案。

还有另一个选项最佳方法可能是更改功能区中的“保存按钮”,这样当单击时,ECMA 脚本首先保存您的项目,然后重定向到其他页面,或在对话框中打开其他页面。 进一步建议但这是唯一的其他方法吗?

我对 SP 相当陌生,只是试图用我有限的知识来解决大量错误的做事方式,但不幸的是,我被 SP2010 困住了。

关于如何解决这个问题有什么想法吗?

============

编辑:根据要求提供更多信息

因此,有两个站点(称为 A)将有一个名为 B 的子站点。A 有一个列表,向该列表添加一个项目会触发事件接收器,该事件接收器创建子站点 B 和其他相关内容。如果我从 B 的 SharePoint 列表中修改 B“项目”,那么我不需要重定向并返回到列表就可以了。如果我正在查看 A 上的整齐呈现的甘特图,列出了 B,如果我在单击“保存”后编辑 B,我们需要返回到 A。如果我在 B 上,也有一个编辑按钮,所以我想返回到B 编辑后点击保存。

因此,当我们进入编辑屏幕时,我们会附加 source= 。从我阅读的一些内容来看,SharePoint 似乎会接收并重定向。编辑页面上的字段之一是 A 站点下方的相对 url,如果发生更改,则重定向 url 将不再有效并抛出 404,因此我们用新输入的值替换旧的 B 子路径。但我们随后需要代码来重定向到新位置。

最佳答案

我不太确定我是否正确理解了您的要求。但我会尝试一下。只是我所理解的快速总结(如果我错了请纠正我......):

  • 您在网站集中有一个带有列表的根网站
  • 该列表中的每个条目对应一个子网站,该子网站将在根网站下的列表项创建 (ER) 中创建为子网站
  • 可以从根网站中的列表及其映射到的子网站编辑列表项
  • 从子网站进行编辑时,您希望在保存后返回到子网站

我的方法是这样的:

  1. 按照本文 SP Dialog and List Forms 中描述的步骤操作
  2. 在子网站上打开一个对话框,链接到根网站的编辑表单。
  3. 保存后,用户发现自己已经在他应该在的地方

希望这有帮助...干杯!

编辑:只需阅读有关更改网址的要求即可。创建一个自定义编辑表单,您可以使用一些将值传递回原始站点的 js 对其进行增强 -> Parameters in dialogs 。然后,您可以在 javascript 回调中做出相应 react 并重定向到新的 url。

关于Sharepoint 2010 事件接收器中的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43749087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com