【问题标题】:Pass Parameter Upload.aspx Sharepoint Online传参数 Upload.aspx Sharepoint Online
【发布时间】:2016-09-28 22:24:22
【问题描述】:

我不敢相信这这么难!

简单地说,我正在尝试在 Sharepoint 中上传一个文档,并在链接中传递一些数据。

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

然后我提供了另一个链接,允许用户使用以下内容上传文档: .../_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/) 执行此操作,但我只是收到“拒绝访问。您无权执行此操作或访问此资源。”

如果有人在上述任何方法上取得了任何成功,我很想知道您是如何设法使其发挥作用的。对于我在尝试解决此问题上所花费的时间,以及它实际上为我们的用户节省了多少时间,我已经准备好放弃了。

【问题讨论】:

    标签: asp.net sharepoint file-upload salesforce sharepoint-online


    【解决方案1】:

    作为参考和其他与我一样苦苦挣扎的人,我最终找到了解决方案。

    首先在在线 Sharepoint 上,您似乎无法修改 Upload.apsx,但您可以修改 EditForm.aspx。上传文件后,您将被引导至此表单以使其正常工作。

    所以您想将参数传递给 Upload.aspx,在发布后它将被传递给 EditForm.aspx(但是是自定义的),您可以在表单中使用该参数。

    这是怎么做的:

    • 在 Sharepoint 设计器中打开您的网站
    • 转到列表和库并单击文档库
    • 您应该获得一种包含多个部分的摘要页面,其中一个是表单
    • 在“表单”部分下单击“新建”
    • 给它一个文件名 (customedit)
    • 选择“编辑项目表单(用于编辑现有列表项)”
    • 选择“设置为所选类型的默认表单”,因为这将 覆盖 EditForm.aspx,一旦用户单击以不被使用 上传文件
    • 点击确定
    • 您的新表单将出现在“表单”部分中
    • 点击编辑文件
    • 首先我们需要在表单中定义参数
    • 单击 WebPartPages:DataFormWebPart 标记(我的第 24 行)或下方的代码以获取顶部的位置特定选项
    • 现在您应该在顶部功能区中看到数据视图工具
    • 点击选项,然后在过滤、排序和分组部分点击参数
    • 单击新参数并输入查询字符串变量(您在地址中传递的字段 id)和默认值
    • 它将称为 Param1,您可以选择更改它,但我没有以下内容
    • 向下滚动直到看到(我的第 122 行)
    • 下面应该是一个包含您的文档字段的表格
    • 删除您不想看到的内容以整理您的编辑表单
    • 在您要自动填充的项目下,您应该会看到一个 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 列的字段名称
    • 保存并测试

    现在我不久前想出了这个问题,但想发布这个以供参考,所以如果它不起作用,我可能错过了一点,但希望你能明白它的要点。

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

    【讨论】:

    • 谢谢@Graham,我尝试了您的解决方案,它对我来说非常有效,但我想将自动填充的字段设置为只读,因此该字段的原始值来自销售队伍。你对此有什么建议吗?
    • 恐怕我不确定这一点。为了自动创建一个唯一的文件名,我不得不编写一个 .ASP 程序并将其托管在 IIS 服务器上,这将使您能够完全灵活地准确显示您想要查看/编辑的字段,并让您完全控制它的方式出现在 Sharepoint 中。抱歉,我无法提供更多帮助。
    • 您好@Graham,我对这种情况有一个新要求:当它显示带有自动填充字段的Custom Edit Form 时,我想跳过这一步(并且您必须单击save 按钮重定向到库页面),并自动重定向到应该上传文档的库。这可能吗 ?。感谢您的帮助
    猜你喜欢
    • 2017-07-19
    • 2020-10-16
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2023-03-19
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多