Ejemplo n.º 1
0
        /// <summary>
        /// Renders an image and label in readonly mode, a checkbox and label in edit mode.
        /// </summary>
        public void Render(BocCheckBoxRenderingContext renderingContext)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);

            AddAttributesToRender(renderingContext);
            renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span);

            var checkBoxControl = new HtmlInputCheckBox {
                ID = renderingContext.Control.GetValueName(), ClientIDMode = ClientIDMode.Static
            };
            var labelControl = new Label();

            string description = GetDescription(renderingContext);

            if (renderingContext.Control.IsReadOnly)
            {
                var imageControl = new Image();
                PrepareImage(renderingContext, imageControl, description);

                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Id, renderingContext.Control.GetValueName());
                if (renderingContext.Control.Value.HasValue)
                {
                    renderingContext.Writer.AddAttribute("data-value", renderingContext.Control.Value.Value.ToString());
                }
                renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span);
                imageControl.RenderControl(renderingContext.Writer);
                renderingContext.Writer.RenderEndTag();

                PrepareLabel(renderingContext, description, labelControl);
                labelControl.RenderControl(renderingContext.Writer);
            }
            else
            {
                bool hasClientScript = DetermineClientScriptLevel(renderingContext);
                if (hasClientScript)
                {
                    PrepareScripts(renderingContext, checkBoxControl, labelControl);
                }

                checkBoxControl.Checked  = renderingContext.Control.Value.Value;
                checkBoxControl.Disabled = !renderingContext.Control.Enabled;

                checkBoxControl.RenderControl(renderingContext.Writer);

                PrepareLabel(renderingContext, description, labelControl);
                labelControl.RenderControl(renderingContext.Writer);
            }

            renderingContext.Writer.RenderEndTag();
        }