Как динамически переключать PageLayout и MasterPage страницы публикации SharePoint?
Чтобы улучшить как редактирование, так и отображение страниц публикаций SharePoint WCM, я бы хотел иметь возможность переключаться на специальный набор Masterpage / PageLayout в режиме редактирования.
Так что в / _catalogs / masterpage я хочу иметь:
MyMasterpage.master - главная страница для режима отображения MyMasterpage-edit.master - главная страница для режима редактирования, используйте только если доступно MyPageLayout.aspx - разметка страницы для режима отображения MyPageLayout-edit.aspx - разметка страницы для режима редактирования, используйте только если доступно
Когда я создаю новую страницу публикации в библиотеке страниц, я выбираю макет страницы MyPageLayout.
При рендеринге страницы я хотел бы определить, находится ли я в режиме редактирования отображения, как это делает серверный элемент управления. Этот элемент управления выполняет следующий код для определения режима рендеринга:
private void calculateShouldRender()
{
SPControlMode contextualFormModeFromPostedForm = ConsoleUtilities.GetContextualFormModeFromPostedForm();
if ((SPControlMode.Display == contextualFormModeFromPostedForm) && (PageDisplayMode.Display == this.PageDisplayMode))
{
this.shouldRender = true;
}
else if ((SPControlMode.Edit == contextualFormModeFromPostedForm) && (PageDisplayMode.Edit == this.PageDisplayMode))
{
this.shouldRender = true;
}
else
{
this.shouldRender = false;
}
this.Visible = this.shouldRender;
}
Если режим рендеринга - «Правка», я хочу переключиться на главную страницу MyMasterpage-edit.master и страницу «MyPageLayout-edit.aspx».
Я мог бы сделать большой переход на главной странице и макете страницы, контролируемых серверными элементами управления, но я хотел бы разделить обязанности. Аналитик SharePoint может создавать оптимальные страницы в режиме редактирования, а разработчик внешнего интерфейса может создавать чистые и красивые страницы в режиме отображения без всяких проблем с редактированием.
Есть идеи, как этого добиться? Переключение мастер-страницы не кажется проблемой, я однажды написалСообщение блога на этом. Трудной вещью кажется переключение макета страницы.