コード例 #1
0
        public XElement GetMetaFieldValueElement(Field field)
        {
            XElement metaField = new XElement(
                "MetaField",
                new XElement("Name", _mappingHelper.GetEpiserverFieldName(field.FieldType)),
                new XElement("Type", _mappingHelper.GetEpiserverDataType(field.FieldType))
                );

            if (field.FieldType.DataType.Equals(DataType.LocaleString))
            {
                var ls = field.Data as LocaleString;
                if (!field.IsEmpty())
                {
                    foreach (var culturePair in _config.LanguageMapping)
                    {
                        if (ls != null)
                        {
                            metaField.Add(
                                new XElement("Data",
                                             new XAttribute("language", culturePair.Key.Name.ToLower()),
                                             new XAttribute("value", ls[culturePair.Value] ?? string.Empty)));
                        }
                    }
                }
                else
                {
                    foreach (var culturePair in _config.LanguageMapping)
                    {
                        metaField.Add(new XElement("Data", new XAttribute("language", culturePair.Key.Name.ToLower()), new XAttribute("value", string.Empty)));
                    }
                }
            }
            else if (field.FieldType.DataType.Equals(DataType.CVL))
            {
                var cvlDataElement = _pimFieldAdapter.GetCVLValues(field);
                metaField.Add(cvlDataElement);
            }
            else
            {
                metaField.Add(
                    new XElement("Data",
                                 new XAttribute("language", _config.ChannelDefaultLanguage.Name.ToLower()),
                                 new XAttribute("value", _pimFieldAdapter.GetFlatFieldData(field))));
            }

            return(metaField);
        }