protected override void RenderChildren(HtmlTextWriter writer) { dynamic page = new ReflectedObject(Page); dynamic self = new ReflectedObject(this); page._inOnFormRender = true; HandleMaintainScrollPositionOnPostBack(); HandleAutoFocus(); RenderMethod renderMethod = null; if (self._occasionalFields != null && self._occasionalFields.RareFields != null) renderMethod = self._occasionalFields.RareFields.RenderMethod; if (renderMethod != null) { // Do not be fooled by the code path here (via occasionalFields and RareFields), // this is a very common scenario when there are code-blocks in the code. // <form runat="server"> <%= "Hello world!" %> </form> writer.BeginRender(); renderMethod(writer, this); writer.EndRender(); } else { foreach (Control child in Controls) { child.RenderControl(writer); } } if (page.RequiresViewStateEncryptionInternal) { // The __VIEWSTATEENCRYPTED field is just a marker-field, it's presence // changes how the __VIEWSTATE field is handled on post-back (read: decrypted) Page.ClientScript.RegisterHiddenField("__VIEWSTATEENCRYPTED", String.Empty); } if (Page.EnableEventValidation) { page.ClientScript.SaveEventValidationField(); } page.RenderViewStateFields(writer); _clientScriptManagerWrapper.RenderHiddenFields(writer); // Include the webforms script if someone requests it. if (page._fRequireWebFormsScript) { RegisterWebFormsScript(); } if (!NewPostBackScriptAdded) { var ctrl = new NewPostBackScript(); ctrl.RenderControl(writer); } // Render 1) registered scripts (WebForms.js, Focus.js) and 2) WebForm_OnSubmit. _clientScriptManagerWrapper.RenderClientScriptBlocks(writer); _clientScriptManagerWrapper.RenderArrayDeclares(writer); _clientScriptManagerWrapper.RenderExpandoAttributes(writer); _clientScriptManagerWrapper.RenderClientStartupScripts(writer); page._inOnFormRender = false; RenderMethod postFormRenderMethod = page._postFormRenderDelegate; if (postFormRenderMethod != null) postFormRenderMethod(writer, this); }