コードの公開ページの名前を変更する方法
-
16-10-2019 - |
質問
私はバルクページの名前の名前を実行しようとしています(nb。ファイル名EG Default.aspx、表示されたタイトルではありません)
foreach (PublishingPage page in pweb.GetPublishingPages())
{
Console.WriteLine(page.Name);
page.Name = GetNewNamingConventionForPage(page.Name); //error, it's read only
}
何が与えるのですか?ページライブラリで手動で名前を変更できます。
解決
あなたはを設定する必要があります "FileLeafRef"
基礎となるフィールド SPListItem
公開ページ用。最初にファイルをチェックアウトし(または作成してから新しいサイトに更新する)、更新する必要があります。 .ListItem["FileLeafRef"]
プロパティを確認してから、それを確認して公開します。
このコードは、新しい公開ページを作成し、ファイル名を変更することです。実行する必要があります .Update
filleafrefを設定する前に公開ページで "object does not exist"
エラー。
if (PublishingWeb.IsPublishingWeb(curWeb))
{
PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(curWeb);
PublishingPage pubPage = pubWeb.AddPublishingPage();
pubPage.Title = "My New Page Title";
pubPage.Update();
pubPage.ListItem["FileLeafRef"] = "default"; //.aspx is added automatically
pubPage.ListItem.SystemUpdate(); //SystemUpdate doesn't update the modified fields
pubPage.CheckIn("");
pubPage.ListItem.File.Publish("");
}
アップデート: :BasenameがFileLeafrefに変更され、Basenameは読み取られ、このフィールドを更新することはできません。
他のヒント
そのbeacuse publishingpage.nameは読み取り専用プロパティです。
あなたは試すことができます:
page.ListItem("Name")
私はこれをテストしていないので、これが必要なことを正確に実行するかどうかはわかりませんが、名前を使用して設定することはできません。
var url = oldUrl.Replace(oldFileName, newFileName);
publPage.ListItem.File.MoveTo(url);
所属していません sharepoint.stackexchange