SP2010を使用。2 つのライブラリ (以下のコードではsentApplicationsListとsentApplicationsListXml ) を備えた SPWeb を取得しました。1 つのプロセスで、XML ファイルを最初のライブラリから 2 番目のライブラリに移動する必要があるため、次のように記述しました。
for (int i = 0; i < sentApplicationsList.Items.Count; i++)
{
SPFile file = sentApplicationsList.Items[i].File;
if (file != null && file.Name.EndsWith(".xml"))
{
string newUrl = sentApplicationsListXml.RootFolder.Url + "/" + file.Name;
file.MoveTo(newUrl, true);
}
}
アイテムが sentApplicationsListXml に表示されると、カスタム コンテンツ タイプではなく、ドキュメントコンテンツ タイプが含まれています。SPFile.MoveTo() が content-type を変更するのはなぜですか? 私のコンテンツ タイプは両方のライブラリでアクティブ化されています。
MoveTo() の後で content-type を元に戻すために、いくつかの行を追加しました。
string newUrl = sentApplicationsListXml.RootFolder.Url + "/" + file.Name;
SPContentType contentType = file.Item.ContentType;
file.MoveTo(newUrl, true);
SPFile movedFile = web.GetFile(newUrl);
movedFile.Item[SPBuiltInFieldId.ContentType] = contentType;
movedFile.Item[SPBuiltInFieldId.ContentTypeId] = contentType.Id;
movedFile.Item.SystemUpdate();
これは何の違いもありませんでした。