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())); }