Exemplo n.º 1
0
        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);
        }