質問

私はバルクページの名前の名前を実行しようとしています(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);
ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top