private static void BuildServerSidePage(Control nativeRoot, PageCompositionElement pp) { foreach (var kvp in pp.PlaceHolders) { var placeHolder = kvp.Value; Control contentPlaceHolder = nativeRoot.FindControl(placeHolder.Id); if (contentPlaceHolder == null) { throw new Exception("Placeholder " + placeHolder.Id + " does not exist."); } foreach (var placedRendering in placeHolder.Renderings) { if (placedRendering is WebFormsControlPageCompositionElement) { WebFormsControlPageCompositionElement webFormsCompositionElement = ((WebFormsControlPageCompositionElement)placedRendering); AddRenderHtmlDirective(webFormsCompositionElement, contentPlaceHolder); var control = webFormsCompositionElement.GetControl(); BuildServerSidePage(control, placedRendering); } else { var directive = AddDoNotRenderDirective(placedRendering, contentPlaceHolder); BuildServerSidePage(directive, placedRendering); } } } }
public void Initialize() { var control = _pp.GetControl(); RenderHtmlFor = control.GetType().Name; Controls.Add(control); foreach (var ph in _pp.PlaceHolders.Values) { var contentPlaceHolder = control.FindControl(ph.Id); if (contentPlaceHolder == null) { throw new Exception( $"Placeholder with id '{ph.Id}' cannot be found in the '{control.ID}' naming container."); } contentPlaceHolder.Controls.Add(new SubsitutionHtmlWriterDirective(ph)); } }