Como alternar dinamicamente a página PageLayout e MasterPage of SharePoint Publishing?

Para melhorar a experiência de edição e exibição das páginas de publicação do SharePoint WCM, gostaria de poder mudar para um conjunto especial de Masterpage / PageLayout no modo de edição.

Então em / _catalogs / masterpage eu quero ter:

MyMasterpage.master - página principal para o modo de exibição MyMasterpage-edit.master - página principal para o modo de edição, use apenas se disponível MyPageLayout.aspx - pagelayout para o modo de exibição MyPageLayout-edit.aspx - pagelayout para o modo de edição, use apenas se disponível

Quando crio uma nova página de publicação na biblioteca Pages, seleciono o layout da página MyPageLayou

Ao renderizar a página que gostaria de detectar se estou no modo Editar do vídeo, assim como o controle do servidor. Este controle executa o seguinte código para determinar o modo de renderização:

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;
}

Se o modo de renderização for Editar, quero mudar para a página do MyMasterpage-edit.master e para o pagelayout MyPageLayout-edit.asp

Eu poderia fazer uma grande troca na masterpage e no pagelayout controlados pelos controles do servidor, mas gostaria de dividir as responsabilidades. Um analista do SharePoint pode criar páginas ideais do modo de edição, e um desenvolvedor front-end pode criar páginas limpas e bonitas do modo de exibição sem toda a confusão de ediçã

Alguma idéia de como fazer isso? A mudança de masterpage não parece ser o problema, uma vez escrevi um blogpost nisto. O difícil parece mudar o layout da página.

questionAnswers(12)

yourAnswerToTheQuestion