Exam Area: Area 1 – Product Knowledge (15%)
On-page editing allows editors to edit content directly in the preview without opening a separate form.
@* Html.PropertyFor automatically enables OPE in Edit Mode *@
@Html.PropertyFor(m => m.CurrentPage.Heading)
@* Tag Helper *@
<epi-property name="Heading" model="@Model.CurrentPage"></epi-property>
@* ContentArea with OPE = drag & drop blocks *@
@Html.PropertyFor(m => m.CurrentPage.MainContentArea)
In Edit Mode:
// Check whether we are in Edit Mode
var modeHelper = ServiceLocator.Current.GetInstance<IPageMode>();
if (modeHelper.PageEditing)
{
// In edit mode
}
// In view
@inject IPrincipal User
@if (ViewContext.HttpContext.IsInPreviewMode())
{
// Show extra info for editors
}
// DisplayMode affects how content is rendered
ContextMode.Default // Normal website visitor view
ContextMode.Edit // Edit mode (OPE enabled)
ContextMode.Preview // Preview mode
@inject IContextModeResolver ContextModeResolver
@if (ContextModeResolver.CurrentMode == ContextMode.Edit)
{
@* Show editor hints *@
<div class="editor-hint">This section requires an image</div>
}
else
{
@* Normal visitor view *@
}
@Html.PropertyFor() important for OPE? (Enables on-page editing for the property in Edit Mode)ContextMode.Edit vs ContextMode.Default? (Edit: inside CMS edit view; Default: visitor view)IContextModeResolver.CurrentMode)