Asp.Net MVC CheckBoxList HtmlHelper Extension
I added some more methods to the code provided by Tyler Garlick’s CheckBoxList for ASP.net MVC to allow a dictionary to be passed in place of a list of SelectListItems and an optional list of selected ids. Anyway, here’s the full class.
using System.Collections.Generic; using System.Linq; using System.Text;
namespace System.Web.Mvc { public static class CheckBoxListHelper { public static string CheckBoxList(this HtmlHelper helper, string name, IDictionary<string, string> items) { return CheckBoxList(helper, name, items, null, null); }
public static string CheckBoxList(this HtmlHelper helper, string name, IDictionary<string, string> items, IDictionary<string, object> checkboxHtmlAttributes) { return CheckBoxList(helper, name, items, null, checkboxHtmlAttributes); }
public static string CheckBoxList(this HtmlHelper helper, string name, IDictionary<string, string> items, IEnumerable
public static string CheckBoxList(this HtmlHelper helper, string name, IDictionary<string, string> items, IEnumerable
return CheckBoxList(helper, name, selectListItems, checkboxHtmlAttributes); }
public static string CheckBoxList(this HtmlHelper helper, string name, IEnumerable
public static string CheckBoxList(this HtmlHelper helper, string name, IEnumerable
foreach (var item in items) { output.Append(““); var checkboxList = new TagBuilder("input”); checkboxList.MergeAttribute(“type”, “checkbox”); checkboxList.MergeAttribute(“name”, name); checkboxList.MergeAttribute(“value”, item.Value);
// Check to see if it’s checked if (item.Selected) checkboxList.MergeAttribute(“checked”, “checked”);
// Add any attributes if (checkboxHtmlAttributes != null) checkboxList.MergeAttributes(checkboxHtmlAttributes);
checkboxList.SetInnerText(item.Text); output.Append(checkboxList.ToString(TagRenderMode.SelfClosing)); output.Append(“ ” + item.Text + “”); }
return output.ToString(); } } }
On the view you can pass a dictionary made from items in your view model and selected values form your view model.
In the controller you can access the form values in the request as a comma list of values by the name of the form field.
Request.Form["Product.Categories"]
Hope this helps and thanks to Tyler Garlick for meat of the code.
[UPDATE] Tyler has updated is code for MVC 2.0, here.
Webmentions
These are webmentions via the IndieWeb and webmention.io. Mention this post from your site: