XmlConvert和SharePoint内部字段不相等

本文关键字:字段 不相等 内部 SharePoint XmlConvert | 更新日期: 2023-09-27 18:24:45

根据代码在SharePoint中创建columnField已将内容类型添加到SharePoint

While getting the field name from the Sharepoint i get the following:
PD_FILE_PART_x002e_PD_POPEN_DATE_x003b_DOCSADM_x002e_PD_FILE_PART_x002e_SYSTEM_ID 
while setting the same field from the Code using:
 Here **strContentTypeField** passed parameter from another function.
 SPWeb web = null;
            try
            {
                web = DEUtilityInternal.CreateSPWebObject(siteUrl);
                SPList spList = web.Lists.GetList(new Guid(strListName), false);
                if (spList.ContentTypes.Count > 0)
                {
                    for (int i = 0; i < fieldsToBeAdded.Count; i++)
                    {
                        string strContentTypeField = fieldsToBeAdded[i];
                        if (spList.ContentTypes[contentTypeName].FieldLinks[strContentTypeField] != null) continue;
                        if (!spList.Fields.ContainsField(strContentTypeField))
                        {
                            if (!spList.Fields.ContainsField(XmlConvert.EncodeName(strContentTypeField)))
                                continue;
                            else
                                strContentTypeField = XmlConvert.EncodeName(strContentTypeField);
                        }
                    }
                }
            }

在这里XmlConvert.EncodeName(strContentTypeField)提供以下输出:

PD_FILE_PART_x002e_PD_POPEN_DATE_x003B_DOCSADM_x002e_PD_FILE_PART_x002e_SYSTEM_ID 
so while comparing the field I cannot return the value true.
 What can I do for getting the value equal??

提前Thanx

XmlConvert和SharePoint内部字段不相等

您可以通过这种方式实现:)

 var encodedFieldName=XmlConvert.EncodeName(strContentTypeField);
                        // SharePoint fields are case sensitive , xmlconvert provides Hex characters in upper case while sharepoint stores in lowercase
                        encodedFieldName = Regex.Replace(encodedFieldName, @"[_][x][A-Fa-f0-9]+[_]", m =>m.ToString().ToLower());
                        if (!spList.Fields.ContainsField(encodedFieldName))
                        {
                            encodedFieldName = EncodeToInternalField(encodedFieldName);
                            if (!spList.Fields.ContainsField(encodedFieldName))
                                continue;
                            strContentTypeField = encodedFieldName;
                        }
 private string EncodeToInternalField(string toEncode)
    {
        if (toEncode != null)
        {              
            StringBuilder encodedString = new StringBuilder();   
            foreach (char chr in toEncode.ToCharArray())
            {
                string encodedChar = HttpUtility.UrlEncodeUnicode(chr.ToString());                   
                if (encodedChar == "+" || encodedChar == " ")
                {
                    encodedString.Append("_x0020_");
                }
                else if (encodedChar == ".")
                {
                    encodedString.Append("_x002e_");
                }
                else
                {
                    encodedString.Append(chr);
                }
            }
            return encodedString.ToString();
        }
        return null;
    }