public static string InputButton(this HtmlHelper htmlHelper, string name, SelectListItem listItem, IDictionary <string, object> htmlAttributes, InputListType inputListType = InputListType.RadioButton) { var inputIdSb = new StringBuilder(); inputIdSb.Append(name).Append("_").Append(listItem.Value); var sb = new StringBuilder(); var builder = new TagBuilder("input"); if (listItem.Selected) { builder.MergeAttribute("checked", "checked"); } builder.MergeAttribute("type", inputListType == InputListType.RadioButton ? "radio" : "checkbox"); builder.MergeAttribute("value", listItem.Value); builder.MergeAttribute("id", inputIdSb.ToString()); builder.MergeAttribute("name", name); builder.MergeAttributes(htmlAttributes); sb.Append(builder.ToString(TagRenderMode.SelfClosing)); sb.Append(RadioButtonLabel(inputIdSb.ToString(), listItem.Text, htmlAttributes)); sb.Append("<br>"); return(sb.ToString()); }
public static MvcHtmlString InputListFor <TModel, TValue>( this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TValue> > expression, IEnumerable <SelectListItem> selectList, object htmlAttributes = null, InputListType inputListType = InputListType.RadioButton) { return(htmlHelper.InputListFor(expression, selectList, new RouteValueDictionary(htmlAttributes), inputListType)); }
public static MvcHtmlString InputListFor <TModel, TValue>( this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TValue> > expression, IEnumerable <SelectListItem> selectList, IDictionary <string, object> htmlAttributes, InputListType inputListType = InputListType.RadioButton) { var inputName = GetInputName(expression); TValue value = (TValue)(ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).Model); // IEnumerable<SelectListItem> radioButtonList = GetValue(htmlHelper, expression); if (selectList == null) { return(MvcHtmlString.Empty); } var divTag = new TagBuilder("div"); divTag.MergeAttribute("id", inputName); divTag.MergeAttribute("class", inputListType == InputListType.RadioButton ? "radio" : "checkbox"); foreach (var item in selectList) { var selectItem = new SelectListItem { Text = item.Text, Selected = item.Selected, Value = item.Value.ToString() }; if (value != null && selectItem.Value.Equals(value.ToString())) { selectItem.Selected = true; } var radioButtonTag = InputButton(htmlHelper, inputName, selectItem, htmlAttributes, inputListType); divTag.InnerHtml += radioButtonTag; } return(MvcHtmlString.Create(divTag.ToString())); }