Вопрос

Я пытаюсь сделать переименование массовой страницы (nb. Имя файла, например, 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 На странице Publishing Presempt "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