public static MvcHtmlString CheckBoxList(this HtmlHelper htmlHelper, string name, MultiSelectList listInfo, IDictionary<string, object> htmlAttributes) { if (String.IsNullOrEmpty(name)) throw new ArgumentException("The argument must have a value", "name"); if (listInfo == null) throw new ArgumentNullException("listInfo"); if (listInfo.Count() < 1) throw new ArgumentException("The list must contain at least one value", "listInfo"); StringBuilder sb = new StringBuilder(); foreach (SelectListItem info in listInfo) { TagBuilder builder = new TagBuilder("input"); if (info.Selected) builder.MergeAttribute("checked", "checked"); builder.MergeAttributes<string, object>(htmlAttributes); builder.MergeAttribute("type", "checkbox"); builder.MergeAttribute("value", info.Value); builder.MergeAttribute("name", name); builder.InnerHtml = info.Text; sb.Append(builder.ToString(TagRenderMode.Normal)); sb.Append("<br />"); } return MvcHtmlString.Create(sb.ToString()); }
public static MvcHtmlString CheckboxListFor2 <TModel, TProperty>( this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, MultiSelectList listOfValues) { var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); var sb = new StringBuilder(); if (listOfValues != null) { for (int i = 0; i < listOfValues.Count(); i++)//foreach (var item in listOfValues) { var item = listOfValues.ElementAt(i); var id = string.Format("{0}_{1}", htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression)), item.Value); var name = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression)); var label = htmlHelper.Label(id, HttpUtility.HtmlEncode(item.Text)); var cb = new TagBuilder("input"); cb.MergeAttribute("type", "checkbox"); cb.MergeAttribute("name", name); cb.MergeAttribute("value", @item.Value); cb.MergeAttribute("id", id); if (item.Selected) { cb.MergeAttribute("checked", "checked"); } sb.AppendFormat("{0}{1}</br>", cb, label); } } return(MvcHtmlString.Create(sb.ToString())); }