Добавление элементов в поля мультисписка с помощью веб-сервиса Sitecore

Я вставляю значения полей в Sitecore, используя веб-службу Sitecore. Если мое поле представляет собой однострочный текст, то оно вставляется нормально. Но когда это тип Multilist, вставки нет. Вот код, в который я добавляю элементы:

 private static void GetCountries(DataRow reader, XmlElement myNode)
    {
        myNode.RemoveChild(myNode.LastChild);
        foreach (DataRow wireRow in reader.GetChildRows("Countries"))
        {
            var newNode = myNode.OwnerDocument.CreateElement("Value");
            newNode.InnerText = wireRow["COUNTRY_NAME"].ToString();
            myNode.AppendChild(newNode);
        }
    }

После этого вызова myNode для этого поля выглядит так:

<field itemid="{2C16342E-7662-432B-9895-5EDB15914D7F}" language="en" version="1" 
fieldid="{1F5956D6-EABE-4F74-A248-B25B7EE90350}" name="Categories" title=""
type="Multilist" source="/sitecore/content/data/Countries" section="Content" 
tooltip=""><value>US</value><value>China</value><value>India</value></field>

После этого я вызываю save:

 var okay = sitecoreService.Save(getItem.OuterXml, database, myCred);

Но я не вижу страны в поле Multilist. Что здесь происходит?


person RG-3    schedule 02.10.2012    source источник


Ответы (1)


Поля с несколькими списками принимают строки идентификаторов GUID, разделенных вертикальной чертой, поэтому, чтобы добавить страны в это поле, вам нужно будет найти идентификатор Sitecore для каждого элемента Country, а затем объединить их с вертикальной чертой.

<value>{US-GUID}|{China-GUID}|{India-GUID}</value>

Веб-служба Sitecore не является рекомендуемым способом выполнения этих операций. Есть ли конкретная причина, по которой вы используете веб-службу, а не обычный API (что значительно упростило бы эти вызовы)?

person Stephen Pope    schedule 02.10.2012
comment
Да, я знаю. Но это было требование со стороны маркетинга, чтобы не использовать перегрузку на сервере только для Sitecore. - person RG-3; 02.10.2012