Я пытался программно воспроизвести поведение редактирования свойств поля Content Type на экране управления сайтом SharePoint и безуспешно выбирая переключатель «Required», используя метод UpdateContentType веб-службы WSS 3.0 Webs.asmx.
Первой трудностью была проблема с документацией MSDN, в которой указанные поля должны быть типа FieldRef, хотя на самом деле они должны иметь тип поля (ссылка). Добавление полей и удаление полей работает нормально после исправления, но обновление полей, похоже, вообще не работает. (Следует также отметить, что я выполнил рекомендацию по предыдущей ссылке использовать Method="2"
для обновления полей, но это ничего не меняет, и использование значений метода, отличных от 1 для добавления или отличных от 3 для удаления, также работает правильно).
Вот вызов веб-службы (слегка измененный строками вместо объектов XmlNode для удобства чтения):
SharePointWebServices.Webs webService = new SharePointWebServices.Webs();
webService.Url = "http://mysharepointserver/site";
webService.UseDefaultCredentials = true;
webService.UpdateContentType(
@"0x01005A089D9EC8A382458FB1F6C72096D52A",
@"<ContentType />",
@"<Fields />",
@"<Fields><Method ID=""1""><Field Name=""SomeField"" ID=""{8a4803c4-6545-4a7a-804d-237eebff0ce3}"" Required=""TRUE"" Hidden=""FALSE"" ReadOnly=""FALSE"" PITarget="""" PIAttribute="""" PrimaryPIAttribute="""" Aggregation="""" Node="""" /></Method></Fields>",
@"<Fields />");
После звонка поле по-прежнему Обязательное = "ЛОЖЬ".
Быстрый просмотр сборки stssoap.dll показывает, что свойство «Required» явно игнорируется в процессе обновления. Это нормальное поведение? Если да, то какой метод рекомендуется для программного изменения поля «Обязательное» из клиентского кода (не выполняется на сервере SharePoint)?
Любая помощь будет принята с благодарностью.