Программное копирование пользовательского типа контента и столбцов из одной сети в другую. - PullRequest
0 голосов
/ 10 мая 2010

У меня очень упрямая проблема при копировании пользовательского типа контента и его столбцов из одной сети в другую на одном и том же сайте. В основном, это код, который у меня есть:

foreach (SPField field in existingWeb.Fields)
{
    if (!destinationWeb.Fields.ContainsField(field.Title))
    {
        destinationWeb.Fields.AddFieldAsXml(field.SchemaXml);
        destinationWeb.Update();
    }
}

foreach (SPContentType existingWebCt in existingWeb.ContentType)
{
    SPContentType newContentType = new SPContentType(existingWebCt.Parent, destinationWeb.ContentTypes, existingWebCt.Name);
    foreach (SPFieldLink fieldLink in existingWebCt.FieldLinks)
    {
        SPField sourceField = existingWebCt.Fields[fieldLink.Id];
        if (destinationWeb.Fields.ContainsField(sourceField.Title))
        {
            SPFieldLink destinationWebFieldLink = new SPFieldLink(destinationWeb.Fields[sourceField.Title]);
            newContentType.FieldLinks.Add(destinationWebFieldLink);
        }
    }
}

Существующие веб-сайты и веб-сайты назначения - это 2 веб-сайта на одном сайте. Код работает нормально. Но проблема в том, что на экране SITE Content Type (в настройках сайта), когда я щелкаю ссылку на настраиваемый столбец в настраиваемом типе контента, я получаю сообщение об ошибке:

Invalid field name {UID}.

UID - это тот же UID, что и пользовательский столбец на существующем сайте. Я проверил с моими настройками сети после завершения. Я могу видеть пользовательский список (который я создал с помощью элемента для тестирования), но пользовательский столбец исчез из представления (хотя фактические данные все еще там ... просто установите флажок, чтобы отобразить его) , Но я думаю, что это менее важно ... больше к сведению.

Я также получил множество различных исключений, если я неправильно копирую вещи. Google не смог мне помочь в этом.

Кто-нибудь знает, чего мне не хватает, чтобы эта ссылка снова заработала?

Спасибо.

1 Ответ

0 голосов
/ 10 мая 2010

Гэри Лапойнт уже занялся копированием типов контента, и оказалось, что это глупо: http://stsadm.blogspot.com/2007/08/copy-content-types.html

Проверьте это и посмотрите, есть ли что-то, что вы, возможно, пропустили

...