Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DocuSign API-UpdateTabs未在文档中设置值_C#_Docusignapi - Fatal编程技术网

C# DocuSign API-UpdateTabs未在文档中设置值

C# DocuSign API-UpdateTabs未在文档中设置值,c#,docusignapi,C#,Docusignapi,我在沙箱中工作,有一个模板保存在PDF中,我为其创建了字段。我试图根据一些条件预先填充这些字段,然后发送模板进行签名。我正在使用UpdateTabs方法,并为模板传递一个选项卡列表,包括TabId,我已经循环使用了它并更改了它的值 在此之后发送模板时,字段均为空。这是沙盒环境的限制,还是我做得不对 以下是创建模板草稿、抓取选项卡、更新选项卡、然后发送草稿的代码: var roles = recipients .Select((role, i) => { va

我在沙箱中工作,有一个模板保存在PDF中,我为其创建了字段。我试图根据一些条件预先填充这些字段,然后发送模板进行签名。我正在使用UpdateTabs方法,并为模板传递一个选项卡列表,包括TabId,我已经循环使用了它并更改了它的值

在此之后发送模板时,字段均为空。这是沙盒环境的限制,还是我做得不对

以下是创建模板草稿、抓取选项卡、更新选项卡、然后发送草稿的代码:

var roles = recipients
    .Select((role, i) =>
    {
        var templateRole = role.MapTo<TemplateRole>();
        templateRole.RoutingOrder = $"{i + 1}";
        return templateRole;
    })
    .ToList();

var envelope = new EnvelopeDefinition(
    TemplateId: templateId,
    TemplateRoles: roles,
    Status: DocuSignConstants.Statuses.Created);

var envelopeApi = new EnvelopesApi(_docuSignClient.Client.Configuration);

var result = await envelopeApi
    .CreateEnvelopeAsync(_docuSignContext.Account.AccountId, envelope)
    .ConfigureAwait(false);

var template = await GetDocuSignTemplateById(templateId);

// Grabbing the tabs from the template and then updating the values in them
var tabs = await GetDocumentTabs(templateId, template.Documents.First().DocumentId);
SetDocumentTabValues(recordId, templateId, template.Documents.First().DocumentId, tabs);

var draftRecipients = await envelopeApi.ListRecipientsAsync(_docuSignContext.Account.AccountId,
    result.EnvelopeId);

foreach (var signer in draftRecipients.Signers)
{
    envelopeApi.UpdateTabs
    (
        _docuSignContext.Account.AccountId,
        result.EnvelopeId,
        signer.RecipientId,
        tabs
    );
}

envelopeApi.Update(_docuSignContext.Account.AccountId, result.EnvelopeId, new Envelope
{
    Status = DocuSignConstants.Statuses.Sent
});
我尝试设置Value和OriginalValue字段,但它们都没有设置字段。它是空白的,右上角有一条警告,上面写着“仅限演示文档”,这让我想知道我是否不能在沙盒中设置选项卡


我发现了问题:我从模板文档中抓取选项卡,而不是对每个收件人调用ListTabs函数。一旦我抓取了这些标签,设置这些值就非常有效了

foreach (var signer in draftRecipients.Signers)
{
    var signerTabs = await envelopeApi
        .ListTabsAsync(_docuSignContext.Account.AccountId, 
        result.EnvelopeId, 
        signer.RecipientId);

    SetDocumentTabValues(recordId, templateId, template.Documents.First().DocumentId, signerTabs);

    envelopeApi.UpdateTabs
    (
        _docuSignContext.Account.AccountId,
        result.EnvelopeId,
        signer.RecipientId,
        signerTabs
    );
}

我解决了这个问题:我从模板的文档中抓取选项卡,而不是对每个收件人调用ListTabs函数。一旦我抓取了这些标签,设置这些值就非常有效了

foreach (var signer in draftRecipients.Signers)
{
    var signerTabs = await envelopeApi
        .ListTabsAsync(_docuSignContext.Account.AccountId, 
        result.EnvelopeId, 
        signer.RecipientId);

    SetDocumentTabValues(recordId, templateId, template.Documents.First().DocumentId, signerTabs);

    envelopeApi.UpdateTabs
    (
        _docuSignContext.Account.AccountId,
        result.EnvelopeId,
        signer.RecipientId,
        signerTabs
    );
}

伟大的谢谢你在这里为其他人发帖。非常有用!伟大的谢谢你在这里为其他人发帖。非常有用!