传递参数 Upload.aspx Sharepoint Online

Pass Parameter Upload.aspx Sharepoint Online

我简直不敢相信这太难了!

所以简单地说,我正在尝试在 Sharepoint 中上传一个文档,其中一些数据在 link 中传递。

更详细一点: 我正在尝试将 Sharepoint 与 Salesforce 集成。在 Salesforce 中,我有一个 link 来查看一个对象文档,该文档使用以下内容在 Sharepoint 上进行过滤: .../Shared%20Documents/Forms/AllItems.aspx?FilterField1=SalesforceID&FilterValue1=SALESFORCEID

然后我提供了另一个 link 允许用户使用以下方法上传文档: .../_layouts/15/Upload.aspx?List=LISTGUID

然后我将 SalesforceID 列设置为必填,这样当用户完成上传时,他们会看到 EditForm.aspx,他们可以在其中输入 SalesforceID 以将文档关联到 Salesforce 对象。这工作得很好,但如果可以自动填充 SalesforceID 会更巧妙。

我从以下开始 .../_layouts/15/Upload.aspx?List=LISTGUID&SalesforceID=SALESFORCEID

一旦您选择了要上传的文件并点击确定,它会带您到以下显示正在传递的字段值但不幸的是没有填充必填字段 .../Shared%20Documents/Forms/EditForm.aspx?Mode=Upload&CheckInComment=&ID=9718&RootFolder=%2FROOTFOLDER%2FShared%20Documents&SalesforceID=SALESFORCID

所以我开始研究编辑 Upload.aspx 或 EditForm.aspx 以适应这一点。不过这在 Sharepoint online 上似乎是不可能的。

所以我开始考虑创建自定义页面。所以我非常擅长 C#,并且已经编写了一些可以在 Sharepoint 中上传和设置元数据的东西,但是你不能 运行 在线 Sharepoint 上的服务器端代码。

所以我现在一直在考虑通过 javascript (https://blogs.msdn.microsoft.com/uksharepoint/2013/04/20/uploading-files-using-the-rest-api-and-client-side-techniques/) 来做这件事,我刚刚得到 "Access denied. You do not have permission to perform this action or access this resource."

如果有人通过上述任何方法取得了成功,我很想知道您是如何设法让它发挥作用的。考虑到我花在尝试解决这个问题上的时间以及它实际节省了多少时间来拯救我们的用户,我准备放弃。

供参考和其他任何像我一样努力解决这个问题的人,我最终找到了解决方案。

首先在网上的Sharepoint 上好像不能修改Upload.apsx 但是可以修改EditForm.aspx。上传文件后,您将被定向到此表单以使其正常工作。

所以您想将参数传递给 Upload.aspx,在 posting 时它将传递给 EditForm.aspx(但自定义的),您可以在表格.

操作方法如下:

  • 在 Sharepoint 设计器中打开您的网站
  • 转到列表和库并单击文档库
  • 您应该得到一种包含多个部分的摘要页面,其中一个部分是表单
  • 在“表单”部分下,单击“新建”
  • 给它一个文件名(customedit)
  • Select "Edit item form (used to edit existing list items)"
  • Select "Set as default form for the selected type" 因为这会 在用户点击后覆盖 EditForm.aspx 上传文件
  • 点击确定
  • 您的新表格将出现在“表格”部分
  • 点击它编辑文件
  • 首先我们需要在表单中定义参数
  • 在 WebPartPages:DataFormWebPart 标签(我的第 24 行)或下方的代码中单击以获取顶部的位置特定选项
  • 在顶部的功能区中,您现在应该会看到数据视图工具
  • 单击“选项”,然后在“筛选、排序和分组”部分单击“参数”
  • 单击新参数并输入查询字符串变量(您在地址中传递的字段 ID)和默认值
  • 它将调用它 Param1,您可以选择更改它,但我没有为下面的
  • 向下滚动直到看到(我的是第 122 行)
  • 下面应该是一个 table 包含您的文档字段
  • 删除那些您不想看到的以整理您的编辑表单
  • 在您要自动填充的项目下,您应该会看到一个 SharePoint:FormField 选项卡,如下所示 <SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="Edit" FieldName="SalesforceID" __designer:bind="{ddwrt:DataBind('u',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@SalesforceID')}"/>
  • 记下ff号(上面的ff1)
  • 您想将其替换为 <asp:TextBox runat="server" id="ff1{$Pos}" value="{$Param1}" text="" __designer:bind="{ddwrt:DataBind('u',concat('ff1',$Pos),'Text','TextChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@SalesforceID')}"/>
  • 将 ff1 替换为您在上一点中记下的数字
  • 将 SalesforceID 替换为您的 Sharepoint 列的字段名称
  • 保存并测试

现在我不久前就明白了,但想 post 以供参考,所以如果它不起作用,我可能漏掉了一点,但希望你能理解它的要点。

剩下的就是弄清楚如何自动填充唯一文件名或停止覆盖文件。我都失败得很惨