C# 调用CreateEnvelope时出错:选项卡\页面\编号\未指定

C# 调用CreateEnvelope时出错:选项卡\页面\编号\未指定,c#,asp.net-mvc,docusignapi,digital-signature,docusigncompositetmplts,C#,Asp.net Mvc,Docusignapi,Digital Signature,Docusigncompositetmplts,我是DocuSign API编程的初学者。我有一个.cshtml页面,用于创建发送给客户的信封。当我尝试从DocuSign API创建信封时,会显示如下错误消息: 选项卡元素中未指定页码。选项卡“SignHere\”缺少页码或AnchorTabItem 请参阅下面我的HTML和代码 private List<Signer> SetDocuSignSigners(List<SignerModel> lstSignerModel) { List

我是DocuSign API编程的初学者。我有一个
.cshtml
页面,用于创建发送给客户的信封。当我尝试从DocuSign API创建信封时,会显示如下错误消息:

选项卡元素中未指定页码。选项卡“SignHere\”缺少页码或AnchorTabItem

请参阅下面我的HTML和代码

    private List<Signer> SetDocuSignSigners(List<SignerModel> lstSignerModel)
    {
        List<Signer> lstSigner = new List<Signer>();
        if (lstSignerModel != null && lstSignerModel.Count > 0)
        {
            foreach (SignerModel objModel in lstSignerModel)
            {
                Signer objSigner = new Signer();
                objSigner.Name = objModel.Name;
                objSigner.Email = objModel.Email;
                objSigner.RecipientId = objModel.RecipientId;
                objSigner.RoutingOrder = objModel.RoutingOrder;
                Tabs objTab = new Tabs();
                List<SignHere> lstSalesSignHere = new List<SignHere>();
                List<DateSigned> lstSalesDateHere = new List<DateSigned>();
                List<FullName> lstSalesNameHere = new List<FullName>();

                if (objModel.Tabs != null)
                {
                    if (objModel.Tabs.SignHereTabs != null && objModel.Tabs.SignHereTabs.Count > 0)
                    {
                        foreach (SignHereModel objSignHere in objModel.Tabs.SignHereTabs)
                        {
                            SignHere objSHere = new Model.SignHere();
                            objSHere.PageNumber = (!string.IsNullOrEmpty(objSHere.PageNumber)) ? objSHere.PageNumber : "1";
                            objSHere.AnchorString = objSignHere.AnchorString;
                            objSHere.DocumentId = objSignHere.DocumentId;
                            objSHere.RecipientId = objSignHere.RecipientId;
                            objSHere.AnchorXOffset = objSignHere.AnchorXOffset;
                            objSHere.AnchorYOffset = objSignHere.AnchorYOffset;
                            objSHere.AnchorUnits = objSignHere.AnchorUnits;
                            objSHere.AnchorIgnoreIfNotPresent = objSignHere.AnchorIgnoreIfNotPresent;
                            objSHere.AnchorMatchWholeWord = "true";
                            lstSalesSignHere.Add(objSHere);
                        }
                    }

                    if (objModel.Tabs.DateTabs != null && objModel.Tabs.DateTabs.Count > 0)
                    {
                        foreach (DateModel objDateHere in objModel.Tabs.DateTabs)
                        {
                            DateSigned objDSHere = new DateSigned();
                            objDSHere.PageNumber = (!string.IsNullOrEmpty(objDSHere.PageNumber)) ? objDSHere.PageNumber : "1"; 
                            objDSHere.AnchorString = objDateHere.AnchorString;
                            objDSHere.DocumentId = objDateHere.DocumentId;
                            objDSHere.RecipientId = objDateHere.RecipientId;
                            objDSHere.AnchorXOffset = objDateHere.AnchorXOffset;
                            objDSHere.AnchorYOffset = objDateHere.AnchorYOffset;
                            objDSHere.AnchorUnits = objDateHere.AnchorUnits;
                            objDSHere.AnchorIgnoreIfNotPresent = objDateHere.AnchorIgnoreIfNotPresent;
                            objDSHere.AnchorMatchWholeWord = "true";
                            ////objDSHere.Value = objDateHere.Value;
                            lstSalesDateHere.Add(objDSHere);
                        }
                    }

                    if (objModel.Tabs.FullNameTabs != null && objModel.Tabs.FullNameTabs.Count > 0)
                    {
                        foreach (FullNameModel objDateHere in objModel.Tabs.FullNameTabs)
                        {
                            FullName objNameHere = new FullName();
                            objNameHere.PageNumber = (!string.IsNullOrEmpty(objNameHere.PageNumber)) ? objNameHere.PageNumber : "1"; 
                            objNameHere.AnchorString = objDateHere.AnchorString;
                            objNameHere.DocumentId = objDateHere.DocumentId;
                            objNameHere.RecipientId = objDateHere.RecipientId;
                            objNameHere.AnchorXOffset = objDateHere.AnchorXOffset;
                            objNameHere.AnchorYOffset = objDateHere.AnchorYOffset;
                            objNameHere.AnchorUnits = objDateHere.AnchorUnits;
                            objNameHere.AnchorIgnoreIfNotPresent = objDateHere.AnchorIgnoreIfNotPresent;
                            objNameHere.Value = objDateHere.Value;
                            objNameHere.AnchorMatchWholeWord = "true";
                            lstSalesNameHere.Add(objNameHere);
                        }
                    }
                }

                objTab.SignHereTabs = lstSalesSignHere;
                objTab.DateSignedTabs = lstSalesDateHere;
                objTab.FullNameTabs = lstSalesNameHere;
                objSigner.Tabs = objTab;
                lstSigner.Add(objSigner);
            }
        }

        return lstSigner;
    }
Html

请参阅下面我的详细代码

    private List<Signer> SetDocuSignSigners(List<SignerModel> lstSignerModel)
    {
        List<Signer> lstSigner = new List<Signer>();
        if (lstSignerModel != null && lstSignerModel.Count > 0)
        {
            foreach (SignerModel objModel in lstSignerModel)
            {
                Signer objSigner = new Signer();
                objSigner.Name = objModel.Name;
                objSigner.Email = objModel.Email;
                objSigner.RecipientId = objModel.RecipientId;
                objSigner.RoutingOrder = objModel.RoutingOrder;
                Tabs objTab = new Tabs();
                List<SignHere> lstSalesSignHere = new List<SignHere>();
                List<DateSigned> lstSalesDateHere = new List<DateSigned>();
                List<FullName> lstSalesNameHere = new List<FullName>();

                if (objModel.Tabs != null)
                {
                    if (objModel.Tabs.SignHereTabs != null && objModel.Tabs.SignHereTabs.Count > 0)
                    {
                        foreach (SignHereModel objSignHere in objModel.Tabs.SignHereTabs)
                        {
                            SignHere objSHere = new Model.SignHere();
                            objSHere.PageNumber = (!string.IsNullOrEmpty(objSHere.PageNumber)) ? objSHere.PageNumber : "1";
                            objSHere.AnchorString = objSignHere.AnchorString;
                            objSHere.DocumentId = objSignHere.DocumentId;
                            objSHere.RecipientId = objSignHere.RecipientId;
                            objSHere.AnchorXOffset = objSignHere.AnchorXOffset;
                            objSHere.AnchorYOffset = objSignHere.AnchorYOffset;
                            objSHere.AnchorUnits = objSignHere.AnchorUnits;
                            objSHere.AnchorIgnoreIfNotPresent = objSignHere.AnchorIgnoreIfNotPresent;
                            objSHere.AnchorMatchWholeWord = "true";
                            lstSalesSignHere.Add(objSHere);
                        }
                    }

                    if (objModel.Tabs.DateTabs != null && objModel.Tabs.DateTabs.Count > 0)
                    {
                        foreach (DateModel objDateHere in objModel.Tabs.DateTabs)
                        {
                            DateSigned objDSHere = new DateSigned();
                            objDSHere.PageNumber = (!string.IsNullOrEmpty(objDSHere.PageNumber)) ? objDSHere.PageNumber : "1"; 
                            objDSHere.AnchorString = objDateHere.AnchorString;
                            objDSHere.DocumentId = objDateHere.DocumentId;
                            objDSHere.RecipientId = objDateHere.RecipientId;
                            objDSHere.AnchorXOffset = objDateHere.AnchorXOffset;
                            objDSHere.AnchorYOffset = objDateHere.AnchorYOffset;
                            objDSHere.AnchorUnits = objDateHere.AnchorUnits;
                            objDSHere.AnchorIgnoreIfNotPresent = objDateHere.AnchorIgnoreIfNotPresent;
                            objDSHere.AnchorMatchWholeWord = "true";
                            ////objDSHere.Value = objDateHere.Value;
                            lstSalesDateHere.Add(objDSHere);
                        }
                    }

                    if (objModel.Tabs.FullNameTabs != null && objModel.Tabs.FullNameTabs.Count > 0)
                    {
                        foreach (FullNameModel objDateHere in objModel.Tabs.FullNameTabs)
                        {
                            FullName objNameHere = new FullName();
                            objNameHere.PageNumber = (!string.IsNullOrEmpty(objNameHere.PageNumber)) ? objNameHere.PageNumber : "1"; 
                            objNameHere.AnchorString = objDateHere.AnchorString;
                            objNameHere.DocumentId = objDateHere.DocumentId;
                            objNameHere.RecipientId = objDateHere.RecipientId;
                            objNameHere.AnchorXOffset = objDateHere.AnchorXOffset;
                            objNameHere.AnchorYOffset = objDateHere.AnchorYOffset;
                            objNameHere.AnchorUnits = objDateHere.AnchorUnits;
                            objNameHere.AnchorIgnoreIfNotPresent = objDateHere.AnchorIgnoreIfNotPresent;
                            objNameHere.Value = objDateHere.Value;
                            objNameHere.AnchorMatchWholeWord = "true";
                            lstSalesNameHere.Add(objNameHere);
                        }
                    }
                }

                objTab.SignHereTabs = lstSalesSignHere;
                objTab.DateSignedTabs = lstSalesDateHere;
                objTab.FullNameTabs = lstSalesNameHere;
                objSigner.Tabs = objTab;
                lstSigner.Add(objSigner);
            }
        }

        return lstSigner;
    }
private List setdocusigners(List lstSignerModel)
{
List lstSigner=新列表();
如果(lstSignerModel!=null&&lstSignerModel.Count>0)
{
foreach(lstSignerModel中的SignerModel objModel)
{
Signer objSigner=new Signer();
objSigner.Name=objModel.Name;
objSigner.Email=objModel.Email;
objSigner.RecipientId=objModel.RecipientId;
objSigner.RoutingOrder=objModel.RoutingOrder;
Tabs objTab=新选项卡();
List lstsalesignhere=new List();
List lstSalesDateHere=新列表();
List lstSalesNameHere=新列表();
if(objModel.Tabs!=null)
{
if(objModel.Tabs.SignHereTabs!=null&&objModel.Tabs.SignHereTabs.Count>0)
{
foreach(objModel.Tabs.signheretab中的SignHereModel objSignHere)
{
SignHere objSHere=new Model.SignHere();
objSHere.PageNumber=(!string.IsNullOrEmpty(objSHere.PageNumber))?objSHere.PageNumber:“1”;
objSHere.AnchorString=objSignHere.AnchorString;
objSHere.DocumentId=objSignHere.DocumentId;
objSHere.RecipientId=objSignHere.RecipientId;
objSHere.AnchorXOffset=objSignHere.AnchorXOffset;
objSHere.AnchorYOffset=objSignHere.AnchorYOffset;
objSHere.AnchorUnits=objSignHere.AnchorUnits;
objSHere.AnchorIgnoreIfNotPresent=objSignHere.AnchorIgnoreIfNotPresent;
objSHere.AnchorMatchWholeWord=“true”;
lstsalesignhere.Add(objSHere);
}
}
if(objModel.Tabs.DateTabs!=null&&objModel.Tabs.DateTabs.Count>0)
{
foreach(在objModel.Tabs.DateTabs中的DateModel objdate)
{
DateSigned objdsher=new DateSigned();
objdsher.PageNumber=(!string.IsNullOrEmpty(objdsher.PageNumber))?objdsher.PageNumber:“1”;
objdsher.AnchorString=objDateHere.AnchorString;
objdsher.DocumentId=objDateHere.DocumentId;
objdsher.RecipientId=objDateHere.RecipientId;
objdsher.AnchorXOffset=objDateHere.AnchorXOffset;
objdsher.AnchorYOffset=objDateHere.AnchorYOffset;
objDSHere.AnchorUnits=objDateHere.AnchorUnits;
objdsher.AnchorIgnoreIfNotPresent=objDateHere.AnchorIgnoreIfNotPresent;
objdsher.AnchorMatchWholeWord=“true”;
////objdsher.Value=objDateHere.Value;
lstSalesDateHere.Add(objdsher);
}
}
if(objModel.Tabs.fullnametab!=null&&objModel.Tabs.fullnametab.Count>0)
{
foreach(在objModel.Tabs.fullnametab中的FullNameModel objdate)
{
FullName objNameHere=新的FullName();
objNameHere.PageNumber=(!string.IsNullOrEmpty(objNameHere.PageNumber))?objNameHere.PageNumber:“1”;
objNameHere.AnchorString=objDateHere.AnchorString;
objNameHere.DocumentId=objDateHere.DocumentId;
objNameHere.RecipientId=objDateHere.RecipientId;
objNameHere.AnchorXOffset=objDateHere.AnchorXOffset;
objNameHere.AnchorYOffset=objDateHere.AnchorYOffset;
objNameHere.AnchorUnits=objDateHere.AnchorUnits;
objNameHere.AnchorIgnoreIfNotPresent=objDateHere.AnchorIgnoreIfNotPresent;
objNameHere.Value=objDateHere.Value;
objNameHere.AnchorMatchWholeWord=“true”;
lstSalesNameHere.Add(objNameHere);
}
}
}
objTab.SignHereTabs=lstsalesignhere;
objTab.DateSignedTabs=lstSalesDateHere;
objTab.fullnametab=lstSalesNameHere;
Tabs=objTab;
lstSigner.Add(objSigner);
}
}
返回签名者;
}
我不知道这是一个最佳实践,但我的问题已经解决。如果这不是一个好的实践,请提供建议

库更改后

遗憾的是,它在文档中的签名位置不起作用。我的文档签名和签名日期中有两个字段,但当我通过DocuSign网站签名文档时,这些字段的位置错误。请参阅下面的文档


因此,分配页码并不是解决我问题的方法。

请在上面用实际代码更改进行更新,因为您所显示的内容与您在下面“说”的内容似乎存在冲突

看起来您缺少了“TabId”又名“Tab项”

objSHere.PageNumber = (!string.IsNullOrEmpty(objSHere.PageNumber)) ? objSHere.PageNumber : "1";
    private List<Signer> SetDocuSignSigners(List<SignerModel> lstSignerModel)
    {
        List<Signer> lstSigner = new List<Signer>();
        if (lstSignerModel != null && lstSignerModel.Count > 0)
        {
            foreach (SignerModel objModel in lstSignerModel)
            {
                Signer objSigner = new Signer();
                objSigner.Name = objModel.Name;
                objSigner.Email = objModel.Email;
                objSigner.RecipientId = objModel.RecipientId;
                objSigner.RoutingOrder = objModel.RoutingOrder;
                Tabs objTab = new Tabs();
                List<SignHere> lstSalesSignHere = new List<SignHere>();
                List<DateSigned> lstSalesDateHere = new List<DateSigned>();
                List<FullName> lstSalesNameHere = new List<FullName>();

                if (objModel.Tabs != null)
                {
                    if (objModel.Tabs.SignHereTabs != null && objModel.Tabs.SignHereTabs.Count > 0)
                    {
                        foreach (SignHereModel objSignHere in objModel.Tabs.SignHereTabs)
                        {
                            SignHere objSHere = new Model.SignHere();
                            objSHere.PageNumber = (!string.IsNullOrEmpty(objSHere.PageNumber)) ? objSHere.PageNumber : "1";
                            objSHere.AnchorString = objSignHere.AnchorString;
                            objSHere.DocumentId = objSignHere.DocumentId;
                            objSHere.RecipientId = objSignHere.RecipientId;
                            objSHere.AnchorXOffset = objSignHere.AnchorXOffset;
                            objSHere.AnchorYOffset = objSignHere.AnchorYOffset;
                            objSHere.AnchorUnits = objSignHere.AnchorUnits;
                            objSHere.AnchorIgnoreIfNotPresent = objSignHere.AnchorIgnoreIfNotPresent;
                            objSHere.AnchorMatchWholeWord = "true";
                            lstSalesSignHere.Add(objSHere);
                        }
                    }

                    if (objModel.Tabs.DateTabs != null && objModel.Tabs.DateTabs.Count > 0)
                    {
                        foreach (DateModel objDateHere in objModel.Tabs.DateTabs)
                        {
                            DateSigned objDSHere = new DateSigned();
                            objDSHere.PageNumber = (!string.IsNullOrEmpty(objDSHere.PageNumber)) ? objDSHere.PageNumber : "1"; 
                            objDSHere.AnchorString = objDateHere.AnchorString;
                            objDSHere.DocumentId = objDateHere.DocumentId;
                            objDSHere.RecipientId = objDateHere.RecipientId;
                            objDSHere.AnchorXOffset = objDateHere.AnchorXOffset;
                            objDSHere.AnchorYOffset = objDateHere.AnchorYOffset;
                            objDSHere.AnchorUnits = objDateHere.AnchorUnits;
                            objDSHere.AnchorIgnoreIfNotPresent = objDateHere.AnchorIgnoreIfNotPresent;
                            objDSHere.AnchorMatchWholeWord = "true";
                            ////objDSHere.Value = objDateHere.Value;
                            lstSalesDateHere.Add(objDSHere);
                        }
                    }

                    if (objModel.Tabs.FullNameTabs != null && objModel.Tabs.FullNameTabs.Count > 0)
                    {
                        foreach (FullNameModel objDateHere in objModel.Tabs.FullNameTabs)
                        {
                            FullName objNameHere = new FullName();
                            objNameHere.PageNumber = (!string.IsNullOrEmpty(objNameHere.PageNumber)) ? objNameHere.PageNumber : "1"; 
                            objNameHere.AnchorString = objDateHere.AnchorString;
                            objNameHere.DocumentId = objDateHere.DocumentId;
                            objNameHere.RecipientId = objDateHere.RecipientId;
                            objNameHere.AnchorXOffset = objDateHere.AnchorXOffset;
                            objNameHere.AnchorYOffset = objDateHere.AnchorYOffset;
                            objNameHere.AnchorUnits = objDateHere.AnchorUnits;
                            objNameHere.AnchorIgnoreIfNotPresent = objDateHere.AnchorIgnoreIfNotPresent;
                            objNameHere.Value = objDateHere.Value;
                            objNameHere.AnchorMatchWholeWord = "true";
                            lstSalesNameHere.Add(objNameHere);
                        }
                    }
                }

                objTab.SignHereTabs = lstSalesSignHere;
                objTab.DateSignedTabs = lstSalesDateHere;
                objTab.FullNameTabs = lstSalesNameHere;
                objSigner.Tabs = objTab;
                lstSigner.Add(objSigner);
            }
        }

        return lstSigner;
    }
              "name": "sample string 1",
              "tabLabel": "sample string 2",
              "scaleValue": 3.1,
              "optional": "sample string 4",
              "documentId": "sample string 5",
              "recipientId": "sample string 6",
              "pageNumber": "sample string 7",
              "xPosition": "sample string 8",
              "yPosition": "sample string 9",
              "anchorString": "sample string 10",
              "anchorXOffset": "sample string 11",
              "anchorYOffset": "sample string 12",
              "anchorUnits": "sample string 13",
              "anchorIgnoreIfNotPresent": "sample string 14",
              "tabId": "sample string 15",
              "conditionalParentLabel": "sample string 16",
              "conditionalParentValue": "sample string 17"