繁体   English   中英

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

[英]Redirect in Sharepoint 2010 Event Receiver

我正在查看一些代码,它破坏了SP2010中List项目更改的保存。 在事件接收器的构造函数中,HttpContext被存储为局部变量,然后在ItemUpdating中,最后检索包含返回URL的查询参数并传递SPUtility.Redirect(...)。 这具有取消在编辑表单中进行的任何更改的效果。 因此,按照这样的情况,我发现在线我将HttpContext存储为静态类对象,并在ItemUpdated事件中重定向,现在编辑持续存在,然后重定向到我们期望的位置。

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

我可以想到的唯一另一个选择是快速输出将存储一个静态字典,其中键是用户ID,然后在重定向之前删除该条目,以便不会留下杂散的HttpContext实例泄漏。

因此,从这里查看已接受的解决方案,servy42的第一个响应表明The fact that it works for a few trivial test cases at first doesn't make it a viable solution. 但没有提出可行的解决方案。

另一种选择best approach may be changing Save Button in ribbon such that when clicked, a ECMA script first save your Item, then redirect to other page, or open other page in dialog. 建议进一步下来,但这是唯一的其他方式去?

我对SP很新,只​​是试图用我有限的知识来处理大量错误的做事方式,而不幸的是被SP2010困住了。

有关如何去做的任何想法?

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

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

所以有两个站点,一个称为A,它将有一个名为B的子站点.A有一个List并向该列表添加一个项目触发事件接收器,它创建子站点B和其他相关的东西。 如果我从Bs的SharePoint列表中修改B“项目”,那么我不需要重定向并返回列表就可以了。 如果我正在寻找并在A上整齐地呈现甘特图列出B,如果我在点击保存后编辑B我们需要回到A.如果我在B上还有一个编辑按钮,所以我想回到B编辑完成后单击保存。

因此,当我们进入编辑屏幕时,我们将附加source =。 从一些阅读我已经完成它似乎SharePoint将选择并重定向。 编辑页面上的一个字段是A站点下面的相对URL,如果更改,则重定向URL将不再有效并抛出404,因此我们用新输入的值替换旧的B子路径。 但是我们需要将代码重定向到新位置。

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

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

我的方法是:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM