У меня очень упрямая проблема при копировании пользовательского типа контента и его столбцов из одной сети в другую на одном и том же сайте. В основном, это код, который у меня есть:
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 не смог мне помочь в этом.
Кто-нибудь знает, чего мне не хватает, чтобы эта ссылка снова заработала?
Спасибо.