Как переименовать страницу публикации в коде
-
16-10-2019 - |
Вопрос
Я пытаюсь сделать переименование массовой страницы (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);