C# 调用CreateEnvelope时出错:选项卡\页面\编号\未指定
我是DocuSign API编程的初学者。我有一个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
.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"