【问题标题】:How to pass a value to SharePoint list event receiver?如何将值传递给 SharePoint 列表事件接收器?
【发布时间】:2012-09-26 11:23:51
【问题描述】:

我有一个带有文档库 Web 部件的 SharePoint 网站页面,一旦将文档上传到此库,需要根据页面 url 的参数更新一些库字段。

我尝试使用库上的Event Receiver 绑定来执行此操作,结果发现我无法在事件接收器中获取页面 url,或者更确切地说是参数。然后我想到了Session,但是在四处询问和搜索之后,我只能在itemAdding 中得到HttpContext 而不是itemAdded,更糟糕的是,HttpContext.Current.Session 总是给我nulll 而我'我确定我已经在其他地方早些时候为会话添加了一些价值。

有人能解释一下吗,任何帮助或建议都非常感谢。

【问题讨论】:

    标签: sharepoint session parameter-passing event-receiver


    【解决方案1】:

    SharePoint 允许同步和异步事件接收器。您可以在同步接收器中访问 HttpContext 和 SPContext,因为它在工作线程中运行。阅读更多 accessing HttpContexthow to bind synchronous receiver programmatically

    【讨论】:

    • 感谢您的输入,我之前已经阅读过此内容,现在我可以在单个文件上传中获取 HttpContext,但仍然不能在多个文件上传中获取,即使在我将同步专门设置为在事件接收器中同步之后element.xml,有什么想法吗?
    • 多文件上传功能仅适用于IE,它限制了您产品的浏览器范围。此外,它看起来像多个上传窗口(Upload.aspx 应用程序页面)的工作方式就像一个代理和文件从它上传到在服务器端执行的库。
    • 是的,多文件上传在IE(8)中确实有效,只是HttpContext在多文件上传中不可用,可以在单个文件上传中获得
    【解决方案2】:

    有点晚了,但作为参考,我刚刚在 this page 上看到了解决方案。

    它利用母版页中的自定义控件并将信息存储到HttpRuntime.Cache。然后从同步事件中访问它。

    【讨论】:

      【解决方案3】:

      在页面上下文中没有调用事件接收器。因此您无法访问页面信息。我能看到的唯一方法是编写自定义代码,在保存项目之前预填充页面的值。

      【讨论】:

      • 感谢您的建议。实际上,我在单个文件上传中的 ItemAdding 事件中有 Session 工作,剩下的问题是 HttpContext.Current 在多个文件上传中不知何故不可用,这非常令人沮丧。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      相关资源
      最近更新 更多