Rendering Reason

Determine the context of page rendering

In C1 CMS version 4.2 or later, you can use a public property on

Composite.Core.WebClient.Renderings.Page.PageRenderer.RenderingReason

With this property you can determine what context the current page is rendered in:

namespace Composite.Core.WebClient.Renderings.Page
{
    public enum RenderingReason
    {
        Undefined = 0,
        PageView = 1,
        C1ConsoleBrowserPageView = 2,
        PreviewUnsavedChanges = 4,
        ScreenshotGeneration = 8
    }
}
where:

  • Undefined: Undefined
  • PageView: A page was requested through a browser
  • C1ConsoleBrowserPageView: A page is viewed in the CMS Console's browser
  • PreviewUnsavedChanges: A page is rendered from within an "Edit page" workflow
  • ScreenshotGeneration: A page is rendered to generate an image used for function/template visualization

The property could be useful for function previewing. For example, when previewing a video, a thumbnail with extra video information could be inserted instead of a flash player, or in case of redirecting, you can show the target URL (the following is the Razor syntax):

if(PageRenderer.RenderingReason == RenderingReason.ScreenshotGeneration)
{
	@: This function does a redirect to @RedirectUrl
	return;
}
Response.Redirect(RedirectUrl);

Another example of using the RenderingReason property is optimizing the speed of page previews. Please see "Optimizing Previews" for more information.