Brew.Webforms.Widget.Render C# (CSharp) Method

Render() protected method

protected Render ( System.Web.UI.HtmlTextWriter writer ) : void
writer System.Web.UI.HtmlTextWriter
return void
        protected override void Render(HtmlTextWriter writer)
        {
            var brew = this.Page.Form.FindControl("__brew");
            var widget = new HtmlGenericControl("widget") { ClientIDMode = ClientIDMode.Static };
            var options = ParseOptions();
            var events = ParseEvents();

            if (brew == null) {
                throw new ArgumentException("Brew Error: The __brew control was not found on the page or is not accessible.", "brew");
            }

            widget.Attributes.Add("id", this.ClientID);
            widget.Attributes.Add("name", this.Name);
            widget.Attributes.Add("for", this.TargetControl.ClientID);
            widget.Attributes.Add("data-uniqueid", this.TargetControl.UniqueID);

            foreach (var pair in options) {
                var value = pair.Value;
                widget.Attributes.Add("data-" + pair.Key, Convert.ToString(value));
            }

            foreach (var pair in events) {
                var value = pair.Value;
                widget.Attributes.Add("data-" + pair.Key, Convert.ToString(value));
            }

            brew.Controls.Add(widget);
            brew.Controls.Add(new LiteralControl("\n"));

            if (this.TagKey != HtmlTextWriterTag.Unknown) {
                if (this.ID != null) {
                    writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID);
                }

                writer.RenderBeginTag(this.TagKey);
                base.Render(writer);
                RenderContents(writer);
                writer.RenderEndTag();
            }
            else {
                base.Render(writer);
            }

            this.Page.VerifyRenderingInServerForm(this);

            if (!base.DesignMode) {
                this._scriptManager.RegisterScriptDescriptors(this);
            }
        }