public RadioButtonPairModel()
 {
     inputPairOneValue = 1;
     inputPairTwoValue = 2;
     labelPairOneText = "One";
     labelPairTwoText = "Two";
     htmlAttributesInputPairOne = new Dictionary<string, object>();
     htmlAttributesInputPairTwo = new Dictionary<string, object>();
     htmlAttributesLabelPairOne = new Dictionary<string, object>();
     htmlAttributesLabelPairTwo = new Dictionary<string, object>();
     RadioStyle = CheckBoxRadioStyle.Block;
 }
        public static HtmlString RenderInputListContainer(HtmlHelper html, string htmlFieldName, List<string> inputs,
			int? numberOfColumns, bool displayInColumnsCondition,
			int columnPixelWidth, bool displayInlineBlock, int marginRightPx, bool displayValidationMessage,
			HelpTextStyle validationMessageStyle, InputType inputType, CheckBoxRadioStyle inputStyle)
        {
            var cssClass = inputType == InputType.CheckBoxList ? "checkbox" : "radio";
            var displayStyle = inputStyle == CheckBoxRadioStyle.Block ? "form-block" : "form-inline";

            var container = new TagBuilder("div");
            container.AddCssClass($"{cssClass} {displayStyle}");

            if (displayValidationMessage)
            {
                container.AddCssStyle("display", "inline-block");
                container.AddCssStyle("vertical-align", "middle");
                container.AddCssStyle("margin-top", "4px");
            }

            if (numberOfColumns.HasValue && displayInColumnsCondition)
            {
                container.AddCssStyle("max-width", columnPixelWidth*numberOfColumns + "px");
                var columnedInputs = new List<string>();
                var columnDiv = new TagBuilder("div");

                columnDiv.AddCssClass("input-list-column");
                columnDiv.AddCssStyle("width", columnPixelWidth + "px");
                columnDiv.AddCssStyle("display", "inline-block");

                foreach (var input in inputs)
                {
                    columnDiv.InnerHtml = input;
                    columnedInputs.Add(columnDiv.ToString());
                }

                inputs = columnedInputs;
            }

            if (displayInlineBlock)
            {
                var columnedInputs = new List<string>();
                var columnDiv = new TagBuilder("div");
                columnDiv.AddCssClass("input-list-inline");
                columnDiv.AddCssStyle("display", "inline-block");
                columnDiv.AddCssStyle("margin-right", marginRightPx + "px");

                foreach (var input in inputs)
                {
                    columnDiv.InnerHtml = input;
                    columnedInputs.Add(columnDiv.ToString());
                }

                inputs = columnedInputs;
            }

            var inputsCombined = string.Empty;
            inputs.ForEach(c => inputsCombined += c);
            container.InnerHtml = inputsCombined;

            var validationMessage = "";

            if (displayValidationMessage)
            {
                var validation = html.ValidationMessage(htmlFieldName).ToHtmlString();
                validationMessage = new HelpText(validation, validationMessageStyle).ToHtmlString();
            }

            return new HtmlString(container.ToString(TagRenderMode.Normal) + validationMessage);
        }
 /// <summary>
 /// Display style for radio: inline or block
 /// </summary>
 /// <param name="radioStyle"></param>
 /// <returns></returns>
 public RadioButtonPair DisplayStyle(CheckBoxRadioStyle radioStyle)
 {
     this._model.RadioStyle = radioStyle;
     return this;
 }