Как динамически переключать 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 может создавать оптимальные страницы в режиме редактирования, а разработчик внешнего интерфейса может создавать чистые и красивые страницы в режиме отображения без всяких проблем с редактированием.

Есть идеи, как этого добиться? Переключение мастер-страницы не кажется проблемой, я однажды написалСообщение блога на этом. Трудной вещью кажется переключение макета страницы.

Ответы на вопрос(6)

Ваш ответ на вопрос